diff --git a/.bazelrc b/.bazelrc index a304a7b0e1a..214258e775a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,3 +1,9 @@ -build --repo_env=CC=clang --repo_env=CXX=clang++ --cxxopt="-std=c++17" +common --enable_platform_specific_config + +build --repo_env=CC=clang --repo_env=CXX=clang++ + +build:linux --cxxopt=-std=c++20 +build:macos --cxxopt=-std=c++20 --cpu=darwin_x86_64 +build:windows --cxxopt=/std:c++20 --cxxopt=/Zc:preprocessor try-import %workspace%/local.bazelrc diff --git a/.github/labeler.yml b/.github/labeler.yml index 503833fc4d7..5401e6afd71 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -11,7 +11,7 @@ Go: - change-notes/**/*go.* Java: - - any: [ 'java/**/*', '!java/kotlin-extractor/**/*', '!java/kotlin-explorer/**/*', '!java/ql/test/kotlin/**/*' ] + - any: [ 'java/**/*', '!java/kotlin-extractor/**/*', '!java/ql/test/kotlin/**/*' ] - change-notes/**/*java.* JS: @@ -20,7 +20,6 @@ JS: Kotlin: - java/kotlin-extractor/**/* - - java/kotlin-explorer/**/* - java/ql/test/kotlin/**/* Python: diff --git a/.github/workflows/csv-coverage-pr-artifacts.yml b/.github/workflows/csv-coverage-pr-artifacts.yml index 19ad488a3ab..b560d98a79d 100644 --- a/.github/workflows/csv-coverage-pr-artifacts.yml +++ b/.github/workflows/csv-coverage-pr-artifacts.yml @@ -10,6 +10,7 @@ on: - "*/ql/src/**/*.qll" - "*/ql/lib/**/*.ql" - "*/ql/lib/**/*.qll" + - "*/ql/lib/ext/**/*.yml" - "misc/scripts/library-coverage/*.py" # input data files - "*/documentation/library-coverage/cwe-sink.csv" diff --git a/CODEOWNERS b/CODEOWNERS index 6e2dd9dc66b..b2eb53f0bb0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,7 +8,6 @@ /swift/ @github/codeql-swift /misc/codegen/ @github/codeql-swift /java/kotlin-extractor/ @github/codeql-kotlin -/java/kotlin-explorer/ @github/codeql-kotlin # ML-powered queries /javascript/ql/experimental/adaptivethreatmodeling/ @github/codeql-ml-powered-queries-reviewers diff --git a/config/identical-files.json b/config/identical-files.json index 3c16c953129..ceed02ba5d6 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -523,6 +523,10 @@ "python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll", "ruby/ql/lib/codeql/ruby/typetracking/TypeTracker.qll" ], + "SummaryTypeTracker": [ + "python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll", + "ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll" + ], "AccessPathSyntax": [ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/AccessPathSyntax.qll", "go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll", diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index e5d2ae643bc..e990e830005 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.7.3 + +### Minor Analysis Improvements + +* Deleted the deprecated `hasCopyConstructor` predicate from the `Class` class in `Class.qll`. +* Deleted many deprecated predicates and classes with uppercase `AST`, `SSA`, `CFG`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `CodeDuplication.qll` file. + ## 0.7.2 ### New Features diff --git a/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md b/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md new file mode 100644 index 00000000000..9fef359a1e8 --- /dev/null +++ b/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Deleted the deprecated `getURL` predicate from the `Container`, `Folder`, and `File` classes. Use the `getLocation` predicate instead. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.7.3.md b/cpp/ql/lib/change-notes/released/0.7.3.md new file mode 100644 index 00000000000..d6cb19b669d --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.7.3.md @@ -0,0 +1,7 @@ +## 0.7.3 + +### Minor Analysis Improvements + +* Deleted the deprecated `hasCopyConstructor` predicate from the `Class` class in `Class.qll`. +* Deleted many deprecated predicates and classes with uppercase `AST`, `SSA`, `CFG`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `CodeDuplication.qll` file. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index fee171e9685..a4ea9c8de17 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.2 +lastReleaseVersion: 0.7.3 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 1982886c434..0065372f811 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.7.3-dev +version: 0.7.4-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Class.qll b/cpp/ql/lib/semmle/code/cpp/Class.qll index 2aba033329d..5f79ceefd26 100644 --- a/cpp/ql/lib/semmle/code/cpp/Class.qll +++ b/cpp/ql/lib/semmle/code/cpp/Class.qll @@ -176,20 +176,6 @@ class Class extends UserType { /** Holds if this class, struct or union has a constructor. */ predicate hasConstructor() { exists(this.getAConstructor()) } - /** - * Holds if this class has a copy constructor that is either explicitly - * declared (though possibly `= delete`) or is auto-generated, non-trivial - * and called from somewhere. - * - * DEPRECATED: There is more than one reasonable definition of what it means - * to have a copy constructor, and we do not want to promote one particular - * definition by naming it with this predicate. Having a copy constructor - * could mean that such a member is declared or defined in the source or that - * it is callable by a particular caller. For C++11, there's also a question - * of whether to include members that are defaulted or deleted. - */ - deprecated predicate hasCopyConstructor() { this.getAMemberFunction() instanceof CopyConstructor } - /** * Like accessOfBaseMember but returns multiple results if there are multiple * paths to `base` through the inheritance graph. diff --git a/cpp/ql/lib/semmle/code/cpp/File.qll b/cpp/ql/lib/semmle/code/cpp/File.qll index b2e4e0a41a5..bac9b66965e 100644 --- a/cpp/ql/lib/semmle/code/cpp/File.qll +++ b/cpp/ql/lib/semmle/code/cpp/File.qll @@ -34,14 +34,6 @@ class Container extends Locatable, @container { */ string getAbsolutePath() { none() } // overridden by subclasses - /** - * DEPRECATED: Use `getLocation` instead. - * Gets a URL representing the location of this container. - * - * For more information see [Providing URLs](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-urls). - */ - deprecated string getURL() { none() } // overridden by subclasses - /** * Gets the relative path of this file or folder from the root folder of the * analyzed source location. The relative path of the root folder itself is @@ -183,12 +175,6 @@ class Folder extends Container, @folder { } override string getAPrimaryQlClass() { result = "Folder" } - - /** - * DEPRECATED: Use `getLocation` instead. - * Gets the URL of this folder. - */ - deprecated override string getURL() { result = "file://" + this.getAbsolutePath() + ":0:0:0:0" } } /** @@ -213,12 +199,6 @@ class File extends Container, @file { result.hasLocationInfo(_, 0, 0, 0, 0) } - /** - * DEPRECATED: Use `getLocation` instead. - * Gets the URL of this file. - */ - deprecated override string getURL() { result = "file://" + this.getAbsolutePath() + ":0:0:0:0" } - /** Holds if this file was compiled as C (at any point). */ predicate compiledAsC() { fileannotations(underlyingElement(this), 1, "compiled as c", "1") } diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index b4d89eb8c1d..11e1791ba60 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -27,9 +27,6 @@ class PrintAstConfiguration extends TPrintAstConfiguration { predicate shouldPrintFunction(Function func) { any() } } -/** DEPRECATED: Alias for PrintAstConfiguration */ -deprecated class PrintASTConfiguration = PrintAstConfiguration; - private predicate shouldPrintFunction(Function func) { exists(PrintAstConfiguration config | config.shouldPrintFunction(func)) } @@ -239,9 +236,6 @@ class PrintAstNode extends TPrintAstNode { } } -/** DEPRECATED: Alias for PrintAstNode */ -deprecated class PrintASTNode = PrintAstNode; - /** * Class that restricts the elements that we compute `qlClass` for. */ @@ -286,9 +280,6 @@ abstract class BaseAstNode extends PrintAstNode { deprecated Locatable getAST() { result = this.getAst() } } -/** DEPRECATED: Alias for BaseAstNode */ -deprecated class BaseASTNode = BaseAstNode; - /** * A node representing an AST node other than a `DeclarationEntry`. */ @@ -296,9 +287,6 @@ abstract class AstNode extends BaseAstNode, TAstNode { AstNode() { this = TAstNode(ast) } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - /** * A node representing an `Expr`. */ diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll index 4732cd06184..f9dad008661 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll @@ -14,9 +14,6 @@ library class StandardSsa extends SsaHelper { StandardSsa() { this = 0 } } -/** DEPRECATED: Alias for StandardSsa */ -deprecated class StandardSSA = StandardSsa; - /** * A definition of one or more SSA variables, including phi node definitions. * An _SSA variable_, as defined in the literature, is effectively the pair of diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll index 45ef36f339d..5e9f85581b8 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll @@ -312,6 +312,3 @@ library class SsaHelper extends int { ssa_use(v, result, _, _) } } - -/** DEPRECATED: Alias for SsaHelper */ -deprecated class SSAHelper = SsaHelper; diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll index 25fdba90d52..99aed9702a9 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll @@ -1385,9 +1385,6 @@ private module Cached { conditionalSuccessor(n1, _, n2) } - /** DEPRECATED: Alias for qlCfgSuccessor */ - deprecated predicate qlCFGSuccessor = qlCfgSuccessor/2; - /** * Holds if `n2` is a control-flow node such that the control-flow * edge `(n1, n2)` may be taken when `n1` is an expression that is true. @@ -1398,9 +1395,6 @@ private module Cached { not conditionalSuccessor(n1, false, n2) } - /** DEPRECATED: Alias for qlCfgTrueSuccessor */ - deprecated predicate qlCFGTrueSuccessor = qlCfgTrueSuccessor/2; - /** * Holds if `n2` is a control-flow node such that the control-flow * edge `(n1, n2)` may be taken when `n1` is an expression that is false. @@ -1410,7 +1404,4 @@ private module Cached { conditionalSuccessor(n1, false, n2) and not conditionalSuccessor(n1, true, n2) } - - /** DEPRECATED: Alias for qlCfgFalseSuccessor */ - deprecated predicate qlCFGFalseSuccessor = qlCfgFalseSuccessor/2; } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll index 9b4e0e6a4f9..b380748fb3c 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll @@ -205,6 +205,8 @@ predicate clearsContent(Node n, Content c) { */ predicate expectsContent(Node n, ContentSet c) { none() } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ Type getNodeType(Node n) { suppressUnusedNode(n) and @@ -233,6 +235,12 @@ class CastNode extends Node { CastNode() { none() } // stub implementation } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + class DataFlowCallable = Function; class DataFlowExpr = Expr; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index cc8d0cdbe94..ef006bbff0a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -753,6 +753,8 @@ predicate clearsContent(Node n, Content c) { */ predicate expectsContent(Node n, ContentSet c) { none() } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ DataFlowType getNodeType(Node n) { suppressUnusedNode(n) and @@ -781,6 +783,12 @@ class CastNode extends Node { CastNode() { none() } // stub implementation } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + /** * A function that may contain code or a variable that may contain itself. When * flow crosses from one _enclosing callable_ to another, the interprocedural diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 551653c3aca..0cd152e2473 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -364,7 +364,25 @@ abstract private class OperandBasedUse extends UseImpl { OperandBasedUse() { any() } final override predicate hasIndexInBlock(IRBlock block, int index) { - operand.getUse() = block.getInstruction(index) + // See the comment in `ssa0`'s `OperandBasedUse` for an explanation of this + // predicate's implementation. + exists(BaseSourceVariableInstruction base | base = this.getBase() | + if base.getAst() = any(Cpp::PostfixCrementOperation c).getOperand() + then + exists(Operand op, int indirectionIndex, int indirection | + indirectionIndex = this.getIndirectionIndex() and + indirection = this.getIndirection() and + op = + min(Operand cand, int i | + isUse(_, cand, base, indirection, indirectionIndex) and + block.getInstruction(i) = cand.getUse() + | + cand order by i + ) and + block.getInstruction(index) = op.getUse() + ) + else operand.getUse() = block.getInstruction(index) + ) } final Operand getOperand() { result = operand } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll index aa6a43a2580..38f9bbeec8e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll @@ -122,7 +122,46 @@ abstract private class OperandBasedUse extends UseImpl { override string toString() { result = operand.toString() } final override predicate hasIndexInBlock(IRBlock block, int index) { - operand.getUse() = block.getInstruction(index) + // Ideally, this would just be implemented as: + // ``` + // operand.getUse() = block.getInstruction(index) + // ``` + // but because the IR generated for a snippet such as + // ``` + // int x = *p++; + // ``` + // looks like + // ``` + // r1(glval) = VariableAddress[x] : + // r2(glval) = VariableAddress[p] : + // r3(int *) = Load[p] : &:r2, m1 + // r4(int) = Constant[1] : + // r5(int *) = PointerAdd[4] : r3, r4 + // m3(int *) = Store[p] : &:r2, r5 + // r6(int *) = CopyValue : r3 + // r7(int) = Load[?] : &:r6, ~m2 + // m2(int) = Store[x] : &:r1, r7 + // ``` + // we need to ensure that the `r3` operand of the `CopyValue` instruction isn't seen as a fresh use + // of `p` that happens after the increment. So if the base instruction of this use comes from a + // post-fix crement operation we set the index of the SSA use that wraps the `r3` operand at the + // `CopyValue` instruction to be the same index as the `r3` operand at the `PointerAdd` instruction. + // This ensures that the SSA library doesn't create flow from the `PointerAdd` to `r6`. + exists(BaseSourceVariableInstruction base | base = this.getBase() | + if base.getAst() = any(Cpp::PostfixCrementOperation c).getOperand() + then + exists(Operand op | + op = + min(Operand cand, int i | + isUse(_, cand, base, _, _) and + block.getInstruction(i) = cand.getUse() + | + cand order by i + ) and + block.getInstruction(index) = op.getUse() + ) + else operand.getUse() = block.getInstruction(index) + ) } final override Cpp::Location getLocation() { result = operand.getLocation() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll index 1dd116d6c0e..10fddf6352b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll @@ -577,9 +577,6 @@ private Overlap getVariableMemoryLocationOverlap( */ predicate canReuseSsaForOldResult(Instruction instr) { OldSsa::canReuseSsaForMemoryResult(instr) } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - bindingset[result, b] private boolean unbindBool(boolean b) { result != b.booleanNot() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll index 169de03c2dc..bb3eb683653 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll @@ -73,9 +73,6 @@ module UnaliasedSsaInstructions { } } -/** DEPRECATED: Alias for UnaliasedSsaInstructions */ -deprecated module UnaliasedSSAInstructions = UnaliasedSsaInstructions; - /** * Provides wrappers for the constructors of each branch of `TInstruction` that is used by the * aliased SSA stage. @@ -107,6 +104,3 @@ module AliasedSsaInstructions { result = TAliasedSsaUnreachedInstruction(irFunc) } } - -/** DEPRECATED: Alias for AliasedSsaInstructions */ -deprecated module AliasedSSAInstructions = AliasedSsaInstructions; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll index 607b88fa58d..8a330114fe9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll @@ -74,20 +74,12 @@ private module Shared { class TNonSsaMemoryOperand = Internal::TNonSsaMemoryOperand; - /** DEPRECATED: Alias for TNonSsaMemoryOperand */ - deprecated class TNonSSAMemoryOperand = TNonSsaMemoryOperand; - /** * Returns the non-Phi memory operand with the specified parameters. */ TNonSsaMemoryOperand nonSsaMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { result = Internal::TNonSsaMemoryOperand(useInstr, tag) } - - /** DEPRECATED: Alias for nonSsaMemoryOperand */ - deprecated TNonSSAMemoryOperand nonSSAMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { - result = nonSsaMemoryOperand(useInstr, tag) - } } /** @@ -167,9 +159,6 @@ module UnaliasedSsaOperands { TChiOperand chiOperand(Unaliased::Instruction useInstr, ChiOperandTag tag) { none() } } -/** DEPRECATED: Alias for UnaliasedSsaOperands */ -deprecated module UnaliasedSSAOperands = UnaliasedSsaOperands; - /** * Provides wrappers for the constructors of each branch of `TOperand` that is used by the * aliased SSA stage. @@ -217,6 +206,3 @@ module AliasedSsaOperands { result = Internal::TAliasedChiOperand(useInstr, tag) } } - -/** DEPRECATED: Alias for AliasedSsaOperands */ -deprecated module AliasedSSAOperands = AliasedSsaOperands; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll index 1cfd8a2041e..8c0695247f8 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll @@ -375,11 +375,6 @@ Locatable getInstructionAst(TStageInstruction instr) { ) } -/** DEPRECATED: Alias for getInstructionAst */ -deprecated Locatable getInstructionAST(TStageInstruction instr) { - result = getInstructionAst(instr) -} - CppType getInstructionResultType(TStageInstruction instr) { getInstructionTranslatedElement(instr).hasInstruction(_, getInstructionTag(instr), result) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 3080848b153..5832aa9f928 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -76,9 +76,6 @@ abstract class TranslatedExpr extends TranslatedElement { final override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Declaration getFunction() { result = getEnclosingDeclaration(expr) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll index f5b0b3af930..5c33ecf5f99 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll @@ -46,9 +46,6 @@ predicate canReuseSsaForVariable(IRAutomaticVariable var) { not allocationEscapes(var) } -/** DEPRECATED: Alias for canReuseSsaForVariable */ -deprecated predicate canReuseSSAForVariable = canReuseSsaForVariable/1; - private newtype TMemoryLocation = MkMemoryLocation(Allocation var) { isVariableModeled(var) } private MemoryLocation getMemoryLocation(Allocation var) { result.getAllocation() = var } @@ -80,9 +77,6 @@ class MemoryLocation extends TMemoryLocation { predicate canReuseSsaForOldResult(Instruction instr) { none() } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - /** * Represents a set of `MemoryLocation`s that cannot overlap with * `MemoryLocation`s outside of the set. The `VirtualVariable` will be diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll index 2503e4713d8..849dd70a9a3 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll @@ -40,9 +40,6 @@ library class RangeSsa extends SsaHelper { } } -/** DEPRECATED: Alias for RangeSsa */ -deprecated class RangeSSA = RangeSsa; - private predicate guard_defn(VariableAccess v, Expr guard, BasicBlock b, boolean branch) { guardCondition(guard, v, branch) and guardSuccessor(guard, branch, b) diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 4991b66538f..ca314dcd6d7 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.6.3 + +### New Queries + +* Added a new query, `cpp/overrun-write`, to detect buffer overflows in C-style functions that manipulate buffers. + ## 0.6.2 No user-facing changes. diff --git a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll index 5135aab8d83..51dad0fc18c 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll @@ -16,9 +16,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -51,6 +48,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll index 2505f718bc6..2d9502f2f43 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll @@ -41,9 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } @@ -58,9 +55,6 @@ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configu override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } } -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { diff --git a/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll b/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll index de59e82e552..aecbe148290 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll @@ -10,9 +10,6 @@ private import semmle.code.cpp.models.interfaces.SideEffect */ abstract class SafeExternalApiFunction extends Function { } -/** DEPRECATED: Alias for SafeExternalApiFunction */ -deprecated class SafeExternalAPIFunction = SafeExternalApiFunction; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiFunction extends SafeExternalApiFunction { DefaultSafeExternalApiFunction() { diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll index 5135aab8d83..51dad0fc18c 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll @@ -16,9 +16,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -51,6 +48,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll index 93da5497a22..87e1d6bd7c5 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll @@ -41,9 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfigIR" } @@ -53,9 +50,6 @@ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configu override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } } -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll index de59e82e552..aecbe148290 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll @@ -10,9 +10,6 @@ private import semmle.code.cpp.models.interfaces.SideEffect */ abstract class SafeExternalApiFunction extends Function { } -/** DEPRECATED: Alias for SafeExternalApiFunction */ -deprecated class SafeExternalAPIFunction = SafeExternalApiFunction; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiFunction extends SafeExternalApiFunction { DefaultSafeExternalApiFunction() { diff --git a/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql b/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql index 0d8648aac0a..a9af2d08f51 100644 --- a/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql +++ b/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql @@ -5,7 +5,7 @@ * @kind path-problem * @problem.severity error * @security-severity 9.3 - * @precision medium + * @precision low * @id cpp/overrun-write * @tags reliability * security diff --git a/cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md b/cpp/ql/src/change-notes/released/0.6.3.md similarity index 80% rename from cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md rename to cpp/ql/src/change-notes/released/0.6.3.md index 32195223fcd..d9421d55250 100644 --- a/cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md +++ b/cpp/ql/src/change-notes/released/0.6.3.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- +## 0.6.3 + +### New Queries + * Added a new query, `cpp/overrun-write`, to detect buffer overflows in C-style functions that manipulate buffers. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql index 4e5e06775bb..478ab2cc92a 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql @@ -397,15 +397,19 @@ predicate hasFlowPath( } from - MergedPathNode source, MergedPathNode sink, int k2, int k3, string kstr, - InvalidPointerToDerefFlow::PathNode source3, PointerArithmeticInstruction pai, string operation, - Expr offset, DataFlow::Node n + MergedPathNode source, MergedPathNode sink, int k, string kstr, PointerArithmeticInstruction pai, + string operation, Expr offset, DataFlow::Node n where - hasFlowPath(source, sink, source3, pai, operation, k3) and - invalidPointerToDerefSource(pai, source3.getNode(), k2) and + k = + min(int k2, int k3, InvalidPointerToDerefFlow::PathNode source3 | + hasFlowPath(source, sink, source3, pai, operation, k3) and + invalidPointerToDerefSource(pai, source3.getNode(), k2) + | + k2 + k3 + ) and offset = pai.getRight().getUnconvertedResultExpression() and n = source.asPathNode1().getNode() and - if (k2 + k3) = 0 then kstr = "" else kstr = " + " + (k2 + k3) + if k = 0 then kstr = "" else kstr = " + " + k select sink, source, sink, "This " + operation + " might be out of bounds, as the pointer might be equal to $@ + $@" + kstr + ".", n, n.toString(), offset, offset.toString() diff --git a/cpp/ql/src/external/CodeDuplication.qll b/cpp/ql/src/external/CodeDuplication.qll deleted file mode 100644 index be2dc162e74..00000000000 --- a/cpp/ql/src/external/CodeDuplication.qll +++ /dev/null @@ -1,373 +0,0 @@ -/** Provides classes for detecting duplicate or similar code. */ - -import cpp - -deprecated private newtype TDuplicationOrSimilarity = MKDuplicationOrSimilarity() - -/** - * DEPRECATED: This class is no longer used. - * - * A token block used for detection of duplicate and similar code. - */ -deprecated class Copy extends TDuplicationOrSimilarity { - /** Gets the index of the token in this block starting at the location `loc`, if any. */ - int tokenStartingAt(Location loc) { none() } - - /** Gets the index of the token in this block ending at the location `loc`, if any. */ - int tokenEndingAt(Location loc) { none() } - - /** Gets the line on which the first token in this block starts. */ - int sourceStartLine() { none() } - - /** Gets the column on which the first token in this block starts. */ - int sourceStartColumn() { none() } - - /** Gets the line on which the last token in this block ends. */ - int sourceEndLine() { none() } - - /** Gets the column on which the last token in this block ends. */ - int sourceEndColumn() { none() } - - /** Gets the number of lines containing at least (part of) one token in this block. */ - int sourceLines() { result = this.sourceEndLine() + 1 - this.sourceStartLine() } - - /** Gets an opaque identifier for the equivalence class of this block. */ - int getEquivalenceClass() { none() } - - /** Gets the source file in which this block appears. */ - File sourceFile() { none() } - - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.sourceFile().getAbsolutePath() = filepath and - startline = this.sourceStartLine() and - startcolumn = this.sourceStartColumn() and - endline = this.sourceEndLine() and - endcolumn = this.sourceEndColumn() - } - - /** Gets a textual representation of this element. */ - string toString() { none() } -} - -/** - * DEPRECATED: This class is no longer used. - * - * A block of duplicated code. - */ -deprecated class DuplicateBlock extends Copy { - override string toString() { - result = "Duplicate code: " + this.sourceLines() + " duplicated lines." - } -} - -/** - * DEPRECATED: This class is no longer used. - * - * A block of similar code. - */ -deprecated class SimilarBlock extends Copy { - override string toString() { - result = "Similar code: " + this.sourceLines() + " almost duplicated lines." - } -} - -/** - * DEPRECATED: The `CodeDuplication` library will be removed in a future release. - * - * Gets a function with a body and a location. - */ -deprecated FunctionDeclarationEntry sourceMethod() { - result.isDefinition() and - exists(result.getLocation()) and - numlines(unresolveElement(result.getFunction()), _, _, _) -} - -/** - * DEPRECATED: The `CodeDuplication` library will be removed in a future release. - * - * Gets the number of member functions in `c` with a body and a location. - */ -deprecated int numberOfSourceMethods(Class c) { - result = - count(FunctionDeclarationEntry m | - m = sourceMethod() and - m.getFunction().getDeclaringType() = c - ) -} - -deprecated private predicate blockCoversStatement(int equivClass, int first, int last, Stmt stmt) { - exists(DuplicateBlock b, Location loc | - stmt.getLocation() = loc and - first = b.tokenStartingAt(loc) and - last = b.tokenEndingAt(loc) and - b.getEquivalenceClass() = equivClass - ) -} - -deprecated private Stmt statementInMethod(FunctionDeclarationEntry m) { - result.getParent+() = m.getBlock() and - not result.getLocation() instanceof UnknownStmtLocation and - not result instanceof BlockStmt -} - -deprecated private predicate duplicateStatement( - FunctionDeclarationEntry m1, FunctionDeclarationEntry m2, Stmt s1, Stmt s2 -) { - exists(int equivClass, int first, int last | - s1 = statementInMethod(m1) and - s2 = statementInMethod(m2) and - blockCoversStatement(equivClass, first, last, s1) and - blockCoversStatement(equivClass, first, last, s2) and - s1 != s2 and - m1 != m2 - ) -} - -/** - * DEPRECATED: Information on duplicated statements is no longer available. - * - * Holds if `m1` is a function with `total` lines, and `m2` is a function - * that has `duplicate` lines in common with `m1`. - */ -deprecated predicate duplicateStatements( - FunctionDeclarationEntry m1, FunctionDeclarationEntry m2, int duplicate, int total -) { - duplicate = strictcount(Stmt s | duplicateStatement(m1, m2, s, _)) and - total = strictcount(statementInMethod(m1)) -} - -/** - * DEPRECATED: Information on duplicated methods is no longer available. - * - * Holds if `m` and other are identical functions. - */ -deprecated predicate duplicateMethod(FunctionDeclarationEntry m, FunctionDeclarationEntry other) { - exists(int total | duplicateStatements(m, other, total, total)) -} - -/** - * DEPRECATED: Information on similar lines is no longer available. - * - * INTERNAL: do not use. - * - * Holds if `line` in `f` is similar to a line somewhere else. - */ -deprecated predicate similarLines(File f, int line) { - exists(SimilarBlock b | b.sourceFile() = f and line in [b.sourceStartLine() .. b.sourceEndLine()]) -} - -deprecated private predicate similarLinesPerEquivalenceClass(int equivClass, int lines, File f) { - lines = - strictsum(SimilarBlock b, int toSum | - (b.sourceFile() = f and b.getEquivalenceClass() = equivClass) and - toSum = b.sourceLines() - | - toSum - ) -} - -deprecated private predicate similarLinesCoveredFiles(File f, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - exists(int coveredApprox | - coveredApprox = - strictsum(int num | - exists(int equivClass | - similarLinesPerEquivalenceClass(equivClass, num, f) and - similarLinesPerEquivalenceClass(equivClass, num, otherFile) and - f != otherFile - ) - ) and - (coveredApprox * 100) / numLines > 75 - ) - ) -} - -/** - * DEPRECATED: Information on similar lines is no longer available. - * - * Holds if `coveredLines` lines of `f` are similar to lines in `otherFile`. - */ -deprecated predicate similarLinesCovered(File f, int coveredLines, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - similarLinesCoveredFiles(f, otherFile) and - exists(int notCovered | - notCovered = - count(int j | - j in [1 .. numLines] and - not similarLines(f, j) - ) and - coveredLines = numLines - notCovered - ) - ) -} - -/** - * DEPRECATED: Information on duplicate lines is no longer available. - * - * INTERNAL: do not use. - * - * Holds if `line` in `f` is duplicated by a line somewhere else. - */ -deprecated predicate duplicateLines(File f, int line) { - exists(DuplicateBlock b | - b.sourceFile() = f and line in [b.sourceStartLine() .. b.sourceEndLine()] - ) -} - -deprecated private predicate duplicateLinesPerEquivalenceClass(int equivClass, int lines, File f) { - lines = - strictsum(DuplicateBlock b, int toSum | - (b.sourceFile() = f and b.getEquivalenceClass() = equivClass) and - toSum = b.sourceLines() - | - toSum - ) -} - -/** - * DEPRECATED: Information on duplicate lines is no longer available. - * - * Holds if `coveredLines` lines of `f` are duplicates of lines in `otherFile`. - */ -deprecated predicate duplicateLinesCovered(File f, int coveredLines, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - exists(int coveredApprox | - coveredApprox = - strictsum(int num | - exists(int equivClass | - duplicateLinesPerEquivalenceClass(equivClass, num, f) and - duplicateLinesPerEquivalenceClass(equivClass, num, otherFile) and - f != otherFile - ) - ) and - (coveredApprox * 100) / numLines > 75 - ) and - exists(int notCovered | - notCovered = - count(int j | - j in [1 .. numLines] and - not duplicateLines(f, j) - ) and - coveredLines = numLines - notCovered - ) - ) -} - -/** - * DEPRECATED: Information on similar files is no longer available. - * - * Holds if most of `f` (`percent`%) is similar to `other`. - */ -deprecated predicate similarFiles(File f, File other, int percent) { - exists(int covered, int total | - similarLinesCovered(f, covered, other) and - total = f.getMetrics().getNumberOfLines() and - covered * 100 / total = percent and - percent > 80 - ) and - not duplicateFiles(f, other, _) -} - -/** - * DEPRECATED: Information on duplicate files is no longer available. - * - * Holds if most of `f` (`percent`%) is duplicated by `other`. - */ -deprecated predicate duplicateFiles(File f, File other, int percent) { - exists(int covered, int total | - duplicateLinesCovered(f, covered, other) and - total = f.getMetrics().getNumberOfLines() and - covered * 100 / total = percent and - percent > 70 - ) -} - -/** - * DEPRECATED: Information on duplicate classes is no longer available. - * - * Holds if most member functions of `c` (`numDup` out of `total`) are - * duplicates of member functions in `other`. - */ -deprecated predicate mostlyDuplicateClassBase(Class c, Class other, int numDup, int total) { - numDup = - strictcount(FunctionDeclarationEntry m1 | - exists(FunctionDeclarationEntry m2 | - duplicateMethod(m1, m2) and - m1 = sourceMethod() and - exists(Function f | f = m1.getFunction() and f.getDeclaringType() = c) and - exists(Function f | f = m2.getFunction() and f.getDeclaringType() = other) and - c != other - ) - ) and - total = numberOfSourceMethods(c) and - (numDup * 100) / total > 80 -} - -/** - * DEPRECATED: Information on duplicate classes is no longer available. - * - * Holds if most member functions of `c` are duplicates of member functions in - * `other`. Provides the human-readable `message` to describe the amount of - * duplication. - */ -deprecated predicate mostlyDuplicateClass(Class c, Class other, string message) { - exists(int numDup, int total | - mostlyDuplicateClassBase(c, other, numDup, total) and - ( - total != numDup and - exists(string s1, string s2, string s3, string name | - s1 = " out of " and - s2 = " methods in " and - s3 = " are duplicated in $@." and - name = c.getName() - | - message = numDup + s1 + total + s2 + name + s3 - ) - or - total = numDup and - exists(string s1, string s2, string name | - s1 = "All methods in " and s2 = " are identical in $@." and name = c.getName() - | - message = s1 + name + s2 - ) - ) - ) -} - -/** - * DEPRECATED: Information on file duplication is no longer available. - * - * Holds if `f` and `other` are similar or duplicates. - */ -deprecated predicate fileLevelDuplication(File f, File other) { - similarFiles(f, other, _) or duplicateFiles(f, other, _) -} - -/** - * DEPRECATED: Information on class duplication is no longer available. - * - * Holds if most member functions of `c` are duplicates of member functions in - * `other`. - */ -deprecated predicate classLevelDuplication(Class c, Class other) { - mostlyDuplicateClass(c, other, _) -} - -/** - * DEPRECATED: The CodeDuplication library will be removed in a future release. - * - * Holds if `line` in `f` should be allowed to be duplicated. This is the case - * for `#include` directives. - */ -deprecated predicate whitelistedLineForDuplication(File f, int line) { - exists(Include i | i.getFile() = f and i.getLocation().getStartLine() = line) -} diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 46dffc3e763..077b34194fb 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.6.3-dev +version: 0.6.4-dev groups: - cpp - queries diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected index 7cb0738c580..7c27659de1f 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected @@ -664,11 +664,6 @@ edges | test.cpp:338:8:338:15 | * ... | test.cpp:342:8:342:17 | * ... | | test.cpp:341:8:341:17 | * ... | test.cpp:342:8:342:17 | * ... | | test.cpp:347:14:347:27 | new[] | test.cpp:348:15:348:16 | xs | -| test.cpp:348:15:348:16 | xs | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:348:15:348:16 | xs | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:15:350:19 | Load: * ... | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:16:350:19 | ... ++ | | test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:16 | xs | | test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | | test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | @@ -730,6 +725,69 @@ edges | test.cpp:368:5:368:10 | ... += ... | test.cpp:372:16:372:16 | p | | test.cpp:371:7:371:7 | p | test.cpp:372:15:372:16 | Load: * ... | | test.cpp:372:16:372:16 | p | test.cpp:372:15:372:16 | Load: * ... | +| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:16 | xs | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:378:15:378:16 | xs | test.cpp:384:14:384:16 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | +| test.cpp:381:5:381:7 | end | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | +| test.cpp:384:14:384:16 | end | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:388:14:388:27 | new[] | test.cpp:389:16:389:17 | xs | +| test.cpp:388:14:388:27 | new[] | test.cpp:392:5:392:6 | xs | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:393:9:393:10 | xs | +| test.cpp:389:16:389:17 | xs | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:6 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:6 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:6 | xs | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:395:5:395:6 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:404:3:404:25 | ... = ... | test.cpp:404:7:404:8 | val indirection [post update] [xs] | +| test.cpp:404:7:404:8 | val indirection [post update] [xs] | test.cpp:407:3:407:5 | val indirection [xs] | +| test.cpp:404:12:404:25 | new[] | test.cpp:404:3:404:25 | ... = ... | +| test.cpp:406:3:406:25 | ... = ... | test.cpp:406:7:406:8 | val indirection [post update] [xs] | +| test.cpp:406:7:406:8 | val indirection [post update] [xs] | test.cpp:407:3:407:5 | val indirection [xs] | +| test.cpp:406:12:406:25 | new[] | test.cpp:406:3:406:25 | ... = ... | +| test.cpp:407:3:407:5 | val indirection [xs] | test.cpp:407:7:407:8 | xs indirection | +| test.cpp:407:3:407:18 | access to array | test.cpp:407:3:407:22 | Store: ... = ... | +| test.cpp:407:7:407:8 | xs | test.cpp:407:3:407:18 | access to array | +| test.cpp:407:7:407:8 | xs indirection | test.cpp:407:7:407:8 | xs | +| test.cpp:417:16:417:33 | new[] | test.cpp:419:7:419:8 | xs | +| test.cpp:419:7:419:8 | xs | test.cpp:419:7:419:11 | access to array | +| test.cpp:419:7:419:11 | access to array | test.cpp:419:7:419:15 | Store: ... = ... | +| test.cpp:427:14:427:27 | new[] | test.cpp:433:5:433:6 | xs | +| test.cpp:433:5:433:6 | xs | test.cpp:433:5:433:17 | access to array | +| test.cpp:433:5:433:17 | access to array | test.cpp:433:5:433:21 | Store: ... = ... | nodes | test.cpp:4:15:4:20 | call to malloc | semmle.label | call to malloc | | test.cpp:5:15:5:15 | p | semmle.label | p | @@ -1034,10 +1092,6 @@ nodes | test.cpp:342:8:342:17 | * ... | semmle.label | * ... | | test.cpp:347:14:347:27 | new[] | semmle.label | new[] | | test.cpp:348:15:348:16 | xs | semmle.label | xs | -| test.cpp:350:15:350:19 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:350:16:350:19 | ... ++ | semmle.label | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | semmle.label | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | semmle.label | ... ++ | | test.cpp:355:14:355:27 | new[] | semmle.label | new[] | | test.cpp:356:15:356:16 | xs | semmle.label | xs | | test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | @@ -1062,6 +1116,47 @@ nodes | test.cpp:371:7:371:7 | p | semmle.label | p | | test.cpp:372:15:372:16 | Load: * ... | semmle.label | Load: * ... | | test.cpp:372:16:372:16 | p | semmle.label | p | +| test.cpp:377:14:377:27 | new[] | semmle.label | new[] | +| test.cpp:378:15:378:16 | xs | semmle.label | xs | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:381:5:381:7 | end | semmle.label | end | +| test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | +| test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | +| test.cpp:384:13:384:16 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:384:14:384:16 | end | semmle.label | end | +| test.cpp:388:14:388:27 | new[] | semmle.label | new[] | +| test.cpp:389:16:389:17 | xs | semmle.label | xs | +| test.cpp:392:5:392:6 | xs | semmle.label | xs | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:393:9:393:10 | xs | semmle.label | xs | +| test.cpp:393:9:393:10 | xs | semmle.label | xs | +| test.cpp:395:5:395:6 | xs | semmle.label | xs | +| test.cpp:395:5:395:13 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:404:3:404:25 | ... = ... | semmle.label | ... = ... | +| test.cpp:404:7:404:8 | val indirection [post update] [xs] | semmle.label | val indirection [post update] [xs] | +| test.cpp:404:12:404:25 | new[] | semmle.label | new[] | +| test.cpp:406:3:406:25 | ... = ... | semmle.label | ... = ... | +| test.cpp:406:7:406:8 | val indirection [post update] [xs] | semmle.label | val indirection [post update] [xs] | +| test.cpp:406:12:406:25 | new[] | semmle.label | new[] | +| test.cpp:407:3:407:5 | val indirection [xs] | semmle.label | val indirection [xs] | +| test.cpp:407:3:407:18 | access to array | semmle.label | access to array | +| test.cpp:407:3:407:22 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:407:7:407:8 | xs | semmle.label | xs | +| test.cpp:407:7:407:8 | xs indirection | semmle.label | xs indirection | +| test.cpp:417:16:417:33 | new[] | semmle.label | new[] | +| test.cpp:419:7:419:8 | xs | semmle.label | xs | +| test.cpp:419:7:419:11 | access to array | semmle.label | access to array | +| test.cpp:419:7:419:15 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:427:14:427:27 | new[] | semmle.label | new[] | +| test.cpp:433:5:433:6 | xs | semmle.label | xs | +| test.cpp:433:5:433:17 | access to array | semmle.label | access to array | +| test.cpp:433:5:433:21 | Store: ... = ... | semmle.label | Store: ... = ... | subpaths #select | test.cpp:6:14:6:15 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:6:14:6:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | @@ -1084,7 +1179,11 @@ subpaths | test.cpp:264:13:264:14 | Load: * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | | test.cpp:274:5:274:10 | Store: ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | | test.cpp:308:5:308:29 | Store: ... = ... | test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:29 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:304:15:304:26 | new[] | new[] | test.cpp:308:8:308:10 | ... + ... | ... + ... | -| test.cpp:350:15:350:19 | Load: * ... | test.cpp:347:14:347:27 | new[] | test.cpp:350:15:350:19 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:347:14:347:27 | new[] | new[] | test.cpp:348:20:348:23 | size | size | | test.cpp:358:14:358:26 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | | test.cpp:359:14:359:32 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:359:14:359:32 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 2. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | | test.cpp:372:15:372:16 | Load: * ... | test.cpp:363:14:363:27 | new[] | test.cpp:372:15:372:16 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:363:14:363:27 | new[] | new[] | test.cpp:365:19:365:22 | size | size | +| test.cpp:384:13:384:16 | Load: * ... | test.cpp:377:14:377:27 | new[] | test.cpp:384:13:384:16 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:377:14:377:27 | new[] | new[] | test.cpp:378:20:378:23 | size | size | +| test.cpp:395:5:395:13 | Store: ... = ... | test.cpp:388:14:388:27 | new[] | test.cpp:395:5:395:13 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:388:14:388:27 | new[] | new[] | test.cpp:389:19:389:22 | size | size | +| test.cpp:407:3:407:22 | Store: ... = ... | test.cpp:404:12:404:25 | new[] | test.cpp:407:3:407:22 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:404:12:404:25 | new[] | new[] | test.cpp:407:10:407:17 | ... - ... | ... - ... | +| test.cpp:419:7:419:15 | Store: ... = ... | test.cpp:417:16:417:33 | new[] | test.cpp:419:7:419:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:417:16:417:33 | new[] | new[] | test.cpp:419:10:419:10 | i | i | +| test.cpp:433:5:433:21 | Store: ... = ... | test.cpp:427:14:427:27 | new[] | test.cpp:433:5:433:21 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:427:14:427:27 | new[] | new[] | test.cpp:433:8:433:16 | ... ++ | ... ++ | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp index 5e79aaa4bd9..4048c15be8b 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp @@ -347,7 +347,7 @@ void test24(unsigned size) { char *xs = new char[size]; char *end = xs + size; if (xs < end) { - int val = *xs++; // GOOD [FALSE POSITIVE] + int val = *xs++; // GOOD } } @@ -372,3 +372,64 @@ void test26(unsigned size) { int val = *p; // GOOD [FALSE POSITIVE] } } + +void test27(unsigned size, bool b) { + char *xs = new char[size]; + char *end = xs + size; + + if (b) { + end++; + } + + int val = *end; // BAD +} + +void test28(unsigned size) { + char *xs = new char[size]; + char *end = &xs[size]; + if (xs >= end) + return; + xs++; + if (xs >= end) + return; + xs[0] = 0; // GOOD [FALSE POSITIVE] +} + +struct test29_struct { + char* xs; +}; + +void test29(unsigned size) { + test29_struct val; + val.xs = new char[size]; + size++; + val.xs = new char[size]; + val.xs[size - 1] = 0; // GOOD [FALSE POSITIVE] +} + +void test30(int *size) +{ + int new_size = 0, tmp_size = 0; + + test30(&tmp_size); + if (tmp_size + 1 > new_size) { + new_size = tmp_size + 1; + char *xs = new char[new_size]; + for (int i = 0; i < new_size; i++) { + xs[i] = 0; // GOOD [FALSE POSITIVE] + } + } + *size = new_size; +} + +void test31(unsigned size, unsigned src_pos) +{ + char *xs = new char[size]; + if (src_pos > size) { + src_pos = size; + } + unsigned dst_pos = src_pos; + if(dst_pos < size - 3) { + xs[dst_pos++] = 0; // GOOD [FALSE POSITIVE] + } +} diff --git a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll index 7313518af91..8c4c547f4c8 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll +++ b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll @@ -34,9 +34,6 @@ class AstNode extends Node, TAstNode { override Location getLocation() { result = n.getLocation() } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - class IRNode extends Node, TIRNode { IR::DataFlow::Node n; diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index 907cccd197b..f6a7625b57a 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -6584,6 +6584,13 @@ | taint.cpp:691:18:691:18 | s [post update] | taint.cpp:695:7:695:7 | s | | | taint.cpp:691:20:691:20 | ref arg x | taint.cpp:694:9:694:9 | x | | | taint.cpp:694:7:694:7 | s [post update] | taint.cpp:695:7:695:7 | s | | +| taint.cpp:700:13:700:18 | call to source | taint.cpp:702:11:702:11 | s | | +| taint.cpp:701:9:701:9 | p | taint.cpp:702:4:702:4 | p | | +| taint.cpp:702:4:702:4 | p | taint.cpp:702:4:702:6 | ... ++ | | +| taint.cpp:702:4:702:6 | ... ++ | taint.cpp:702:3:702:6 | * ... | TAINT | +| taint.cpp:702:4:702:6 | ... ++ | taint.cpp:703:8:703:8 | p | TAINT | +| taint.cpp:702:10:702:11 | * ... | taint.cpp:702:3:702:11 | ... = ... | | +| taint.cpp:702:11:702:11 | s | taint.cpp:702:10:702:11 | * ... | TAINT | | vector.cpp:16:43:16:49 | source1 | vector.cpp:17:26:17:32 | source1 | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:31:38:31:44 | source1 | | | vector.cpp:17:21:17:33 | call to vector | vector.cpp:19:14:19:14 | v | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 9806ddb395e..fa6074e44f6 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -693,4 +693,13 @@ void test_argument_source_field_to_obj() { sink(s); // $ SPURIOUS: ast,ir sink(s.x); // $ ast,ir sink(s.y); // clean +} + +namespace strings { + void test_write_to_read_then_incr_then_deref() { + char* s = source(); + char* p; + *p++ = *s; + sink(p); // $ ast ir + } } \ No newline at end of file diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index a4a6a534105..be4c929650c 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -24,5 +24,5 @@ Microsoft.Win32,,,8,,,,,,,,,,,,,,8, MySql.Data.MySqlClient,48,,,,,,,,,,,48,,,,,, Newtonsoft.Json,,,91,,,,,,,,,,,,,,73,18 ServiceStack,194,,7,27,,,,,75,,,92,,,,,7, -System,65,25,12157,,8,8,9,,,4,3,33,1,17,3,4,10163,1994 +System,65,25,12148,,8,8,9,,,4,3,33,1,17,3,4,10163,1985 Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 163638d895f..8f5b7ee0a8c 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",25,12157,65,7 + System,"``System.*``, ``System``",25,12148,65,7 Others,"``Dapper``, ``JsonToItemsTaskFactory``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NETCore.Platforms.BuildTasks``, ``Microsoft.VisualBasic``, ``Microsoft.Win32``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``Windows.Security.Cryptography.Core``",,568,138, - Totals,,25,12732,397,7 + Totals,,25,12723,397,7 diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs index 47bdd3ae568..f4f1cba4d89 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs @@ -120,13 +120,13 @@ namespace Semmle.BuildAnalyser UseReference(filename); } - ResolveConflicts(); - if (options.UseMscorlib) { UseReference(typeof(object).Assembly.Location); } + ResolveConflicts(); + // Output the findings foreach (var r in usedReferences.Keys) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index 97a25d200f7..a9f43af2bea 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -33,7 +33,9 @@ namespace Semmle.Extraction.CSharp.Standalone CSharp.Extractor.Analyse(stopwatch, analyser, options, references => GetResolvedReferencesStandalone(referencePaths, references), (analyser, syntaxTrees) => CSharp.Extractor.ReadSyntaxTrees(sources, analyser, null, null, syntaxTrees), - (syntaxTrees, references) => CSharpCompilation.Create("csharp.dll", syntaxTrees, references), + (syntaxTrees, references) => CSharpCompilation.Create( + "csharp.dll", syntaxTrees, references, new CSharpCompilationOptions(OutputKind.ConsoleApplication, allowUnsafe: true) + ), (compilation, options) => analyser.Initialize(compilation, options), () => { }, _ => { }, diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index 22bf9f69670..3729a5d2528 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -243,7 +243,12 @@ namespace Semmle.Extraction.CSharp.Entities if (methodKind == MethodKind.ExplicitInterfaceImplementation) { // Retrieve the original method kind - methodKind = methodDecl.ExplicitInterfaceImplementations.Select(m => m.MethodKind).FirstOrDefault(); + if (methodDecl.ExplicitInterfaceImplementations.IsEmpty) + { + throw new InternalError(methodDecl, "Couldn't get the original method kind for an explicit interface implementation"); + } + + methodKind = methodDecl.ExplicitInterfaceImplementations.Select(m => m.MethodKind).First(); } switch (methodKind) diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index ad7a007007f..b466881d9d7 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.3 + +No user-facing changes. + ## 1.5.2 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 7eb901bae56..232224b0e26 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.5.3 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 4f2900e0b73..5f8c63b8ea3 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.5.3-dev +version: 1.5.4-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index ad7a007007f..b466881d9d7 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.3 + +No user-facing changes. + ## 1.5.2 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 7eb901bae56..232224b0e26 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.5.3 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 2318576e19e..65153d150f7 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.5.3-dev +version: 1.5.4-dev groups: - csharp - solorigate diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index d2c83cd82cc..f4c86ae3815 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -37,13 +37,13 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration { } override predicate postWithInFlowExclude(Node n) { - n instanceof SummaryNode + n instanceof FlowSummaryNode or n.asExpr().(ObjectCreation).hasInitializer() } override predicate argHasPostUpdateExclude(ArgumentNode n) { - n instanceof SummaryNode + n instanceof FlowSummaryNode or not exists(LocalFlow::getAPostUpdateNodeForArg(n.getControlFlowNode())) or diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py index 7bc159e6720..f69d01b2188 100644 --- a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py +++ b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py @@ -1,5 +1,10 @@ from create_database_utils import * from diagnostics_test_utils import * -run_codeql_database_create(['dotnet test'], db=None, lang="csharp") +# Implicitly build and then run tests. +run_codeql_database_create(['dotnet test'], test_db="test-db", lang="csharp") check_diagnostics() + +# Explicitly build and then run tests. +run_codeql_database_create(['dotnet clean', 'rm -rf test-db', 'dotnet build -o myout', 'dotnet test myout/dotnet_test.dll'], test_db="test2-db", lang="csharp") +check_diagnostics(test_db="test2-db") diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs new file mode 100644 index 00000000000..7e3b2ce1d1c --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs @@ -0,0 +1,10 @@ +namespace dotnet_test_mstest; + +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void TestMethod1() + { + } +} diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs new file mode 100644 index 00000000000..540383dcf43 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs @@ -0,0 +1 @@ +global using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj new file mode 100644 index 00000000000..95c7586e04e --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + false + Exe + + + + + + + + + + diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py new file mode 100644 index 00000000000..ff14366807d --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py @@ -0,0 +1,14 @@ +import platform +from create_database_utils import * +from diagnostics_test_utils import * + +# Implicitly build and then run tests. +run_codeql_database_create(['dotnet test'], test_db="test-db", lang="csharp") +check_diagnostics() + +# Fix `dotnet test` picking `x64` on arm-based macOS +architecture = '-a arm64' if platform.machine() == 'arm64' else '' + +# Explicitly build and then run tests. +run_codeql_database_create(['dotnet clean', 'rm -rf test-db', 'dotnet build -o myout --os win', 'dotnet test myout/dotnet_test_mstest.exe ' + architecture], test_db="test2-db", lang="csharp") +check_diagnostics(test_db="test2-db") diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 435255a997a..8fc9f20a131 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,24 @@ +## 0.6.3 + +### Major Analysis Improvements + +* The extractor has been changed to run after the traced compiler call. This allows inspecting compiler generated files, such as the output of source generators. With this change, `.cshtml` files and their generated `.cshtml.g.cs` counterparts are extracted on dotnet 6 and above. + +### Minor Analysis Improvements + +* C#: Analysis of the `dotnet test` command supplied with a `dll` or `exe` file as argument no longer fails due to the addition of an erroneous `-p:SharedCompilation=false` argument. +* Deleted the deprecated `WebConfigXML`, `ConfigurationXMLElement`, `LocationXMLElement`, `SystemWebXMLElement`, `SystemWebServerXMLElement`, `CustomErrorsXMLElement`, and `HttpRuntimeXMLElement` classes from `WebConfig.qll`. The non-deprecated names with PascalCased Xml suffixes should be used instead. +* Deleted the deprecated `Record` class from both `Types.qll` and `Type.qll`. +* Deleted the deprecated `StructuralComparisonConfiguration` class from `StructuralComparison.qll`, use `sameGvn` instead. +* Deleted the deprecated `isParameterOf` predicate from the `ParameterNode` class. +* Deleted the deprecated `SafeExternalAPICallable`, `ExternalAPIDataNode`, `UntrustedDataToExternalAPIConfig`, `UntrustedExternalAPIDataNode`, and `ExternalAPIUsedWithUntrustedData` classes from `ExternalAPIsQuery.qll`. The non-deprecated names with PascalCased Api suffixes should be used instead. +* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `code` to `code-injection` + * `sql` to `sql-injection` + * `html` to `html-injection` + * `xss` to `js-injection` + * `remote` to `file-content-store` + ## 0.6.2 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md b/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md deleted file mode 100644 index ce6d618af5e..00000000000 --- a/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. - * `code` to `code-injection` - * `sql` to `sql-injection` - * `html` to `html-injection` - * `xss` to `js-injection` - * `remote` to `file-content-store` diff --git a/csharp/ql/lib/change-notes/2023-05-30-source-generators.md b/csharp/ql/lib/change-notes/2023-05-30-source-generators.md deleted file mode 100644 index 5483ce6af35..00000000000 --- a/csharp/ql/lib/change-notes/2023-05-30-source-generators.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* The extractor has been changed to run after the traced compiler call. This allows inspecting compiler generated files, such as the output of source generators. With this change, `.cshtml` files and their generated `.cshtml.g.cs` counterparts are extracted on dotnet 6 and above. diff --git a/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md b/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md new file mode 100644 index 00000000000..60daaa53058 --- /dev/null +++ b/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. diff --git a/csharp/ql/lib/change-notes/released/0.6.3.md b/csharp/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..51f62426686 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,20 @@ +## 0.6.3 + +### Major Analysis Improvements + +* The extractor has been changed to run after the traced compiler call. This allows inspecting compiler generated files, such as the output of source generators. With this change, `.cshtml` files and their generated `.cshtml.g.cs` counterparts are extracted on dotnet 6 and above. + +### Minor Analysis Improvements + +* C#: Analysis of the `dotnet test` command supplied with a `dll` or `exe` file as argument no longer fails due to the addition of an erroneous `-p:SharedCompilation=false` argument. +* Deleted the deprecated `WebConfigXML`, `ConfigurationXMLElement`, `LocationXMLElement`, `SystemWebXMLElement`, `SystemWebServerXMLElement`, `CustomErrorsXMLElement`, and `HttpRuntimeXMLElement` classes from `WebConfig.qll`. The non-deprecated names with PascalCased Xml suffixes should be used instead. +* Deleted the deprecated `Record` class from both `Types.qll` and `Type.qll`. +* Deleted the deprecated `StructuralComparisonConfiguration` class from `StructuralComparison.qll`, use `sameGvn` instead. +* Deleted the deprecated `isParameterOf` predicate from the `ParameterNode` class. +* Deleted the deprecated `SafeExternalAPICallable`, `ExternalAPIDataNode`, `UntrustedDataToExternalAPIConfig`, `UntrustedExternalAPIDataNode`, and `ExternalAPIUsedWithUntrustedData` classes from `ExternalAPIsQuery.qll`. The non-deprecated names with PascalCased Api suffixes should be used instead. +* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `code` to `code-injection` + * `sql` to `sql-injection` + * `html` to `html-injection` + * `xss` to `js-injection` + * `remote` to `file-content-store` diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/csharp/ql/lib/ext/System.Collections.Generic.model.yml b/csharp/ql/lib/ext/System.Collections.Generic.model.yml index 3029690b03f..26ef7027b5e 100644 --- a/csharp/ql/lib/ext/System.Collections.Generic.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Generic.model.yml @@ -40,7 +40,7 @@ extensions: - ["System.Collections.Generic", "LinkedList<>", False, "FindLast", "(T)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "LinkedList<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "AddRange", "(System.Collections.Generic.IEnumerable)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "AsReadOnly", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "List<>", False, "AsReadOnly", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "FindAll", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] @@ -48,10 +48,8 @@ extensions: - ["System.Collections.Generic", "List<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "List<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "CopyTo", "(T[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current]", "value", "manual"] @@ -79,7 +77,7 @@ extensions: - ["System.Collections.Generic", "SortedList<,>+KeyList", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "SortedList<,>+ValueList", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "SortedSet<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Generic", "SortedSet<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "SortedSet<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "CopyTo", "(T[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.Immutable.model.yml b/csharp/ql/lib/ext/System.Collections.Immutable.model.yml index b2bd1b6a774..1a71a78100e 100644 --- a/csharp/ql/lib/ext/System.Collections.Immutable.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Immutable.model.yml @@ -20,7 +20,6 @@ extensions: - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "AddRange<>", "(System.Collections.Immutable.ImmutableArray+Builder)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "AddRange<>", "(TDerived[])", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(TKey,TValue)", "", "Argument[0]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -49,11 +48,11 @@ extensions: - ["System.Collections.Immutable", "ImmutableList<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "Insert", "(System.Int32,T)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "AddRange", "(System.Collections.Generic.IEnumerable)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] @@ -63,10 +62,8 @@ extensions: - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableQueue<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] @@ -85,8 +82,8 @@ extensions: - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>+Builder", False, "get_Values", "()", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Add", "(T)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableStack<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.Specialized.model.yml b/csharp/ql/lib/ext/System.Collections.Specialized.model.yml index 8456af24f14..96b947f2423 100644 --- a/csharp/ql/lib/ext/System.Collections.Specialized.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Specialized.model.yml @@ -9,7 +9,7 @@ extensions: - ["System.Collections.Specialized", "NameValueCollection", False, "Add", "(System.Collections.Specialized.NameValueCollection)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "NameValueCollection", True, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Specialized", "NameValueCollection", False, "CopyTo", "(System.Array,System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - - ["System.Collections.Specialized", "OrderedDictionary", False, "AsReadOnly", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Specialized", "OrderedDictionary", False, "AsReadOnly", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "Add", "(System.String)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "AddRange", "(System.String[])", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "CopyTo", "(System.String[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.model.yml b/csharp/ql/lib/ext/System.Collections.model.yml index 9aa2c2489c9..ef098a6bfe5 100644 --- a/csharp/ql/lib/ext/System.Collections.model.yml +++ b/csharp/ql/lib/ext/System.Collections.model.yml @@ -4,17 +4,15 @@ extensions: extensible: summaryModel data: - ["System.Collections", "ArrayList", False, "AddRange", "(System.Collections.ICollection)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "ArrayList", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "FixedSize", "(System.Collections.ArrayList)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "FixedSize", "(System.Collections.IList)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "GetEnumerator", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.IEnumerator.Current]", "value", "manual"] - - ["System.Collections", "ArrayList", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "ArrayList", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "InsertRange", "(System.Int32,System.Collections.ICollection)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "Repeat", "(System.Object,System.Int32)", "", "Argument[0]", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "BitArray", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "Hashtable", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "BitArray", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Hashtable", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary,System.Collections.IEqualityComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -43,9 +41,9 @@ extensions: - ["System.Collections", "IList", True, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections", "IList", True, "set_Item", "(System.Int32,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Collections", "Queue", True, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - - ["System.Collections", "Queue", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Queue", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Queue", False, "Peek", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - - ["System.Collections", "SortedList", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "SortedList", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "SortedList", False, "GetByIndex", "(System.Int32)", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue", "value", "manual"] - ["System.Collections", "SortedList", False, "GetValueList", "()", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -53,6 +51,6 @@ extensions: - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary,System.Collections.IComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary,System.Collections.IComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections", "Stack", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - - ["System.Collections", "Stack", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Stack", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Stack", False, "Peek", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections", "Stack", False, "Pop", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Data.model.yml b/csharp/ql/lib/ext/System.Data.model.yml index 26f650c96a5..6331e67c067 100644 --- a/csharp/ql/lib/ext/System.Data.model.yml +++ b/csharp/ql/lib/ext/System.Data.model.yml @@ -58,7 +58,7 @@ extensions: - ["System.Data", "IDataParameterCollection", True, "set_Item", "(System.String,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Data", "ITableMappingCollection", True, "get_Item", "(System.String)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Data", "ITableMappingCollection", True, "set_Item", "(System.String,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - - ["System.Data", "PropertyCollection", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Data", "PropertyCollection", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "AsEnumerable<>", "(System.Data.TypedTableBase)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "ElementAtOrDefault<>", "(System.Data.TypedTableBase,System.Int32)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "OrderBy<,>", "(System.Data.TypedTableBase,System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml b/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml index bd28d9168fd..1e664b73e4a 100644 --- a/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml +++ b/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml @@ -6,6 +6,4 @@ extensions: - ["System.Runtime.CompilerServices", "ConditionalWeakTable<,>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Runtime.CompilerServices", "ConfiguredTaskAwaitable<>", False, "GetAwaiter", "()", "", "Argument[this].SyntheticField[m_configuredTaskAwaiter]", "ReturnValue", "value", "manual"] - ["System.Runtime.CompilerServices", "ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter", False, "GetResult", "()", "", "Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result]", "ReturnValue", "value", "manual"] - - ["System.Runtime.CompilerServices", "ReadOnlyCollectionBuilder<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Runtime.CompilerServices", "ReadOnlyCollectionBuilder<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Runtime.CompilerServices", "TaskAwaiter<>", False, "GetResult", "()", "", "Argument[this].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result]", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.model.yml b/csharp/ql/lib/ext/System.model.yml index b0f74507b87..9b4fc9615ab 100644 --- a/csharp/ql/lib/ext/System.model.yml +++ b/csharp/ql/lib/ext/System.model.yml @@ -13,7 +13,7 @@ extensions: - ["System", "Array", False, "AsReadOnly<>", "(T[])", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System", "Array", False, "Clear", "(System.Array)", "", "Argument[0].WithoutElement", "Argument[0]", "value", "manual"] - ["System", "Array", False, "Clear", "(System.Array,System.Int32,System.Int32)", "", "Argument[0].WithoutElement", "Argument[0]", "value", "manual"] - - ["System", "Array", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System", "Array", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System", "Array", False, "CopyTo", "(System.Array,System.Int64)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System", "Array", False, "Find<>", "(T[],System.Predicate)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - ["System", "Array", False, "Find<>", "(T[],System.Predicate)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 17e00fa022c..43f20151fdc 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/csharp-all -version: 0.6.3-dev +version: 0.6.4-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/ssa: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} diff --git a/csharp/ql/lib/semmle/code/asp/WebConfig.qll b/csharp/ql/lib/semmle/code/asp/WebConfig.qll index 49e42fce5c1..fdc251b4242 100644 --- a/csharp/ql/lib/semmle/code/asp/WebConfig.qll +++ b/csharp/ql/lib/semmle/code/asp/WebConfig.qll @@ -18,9 +18,6 @@ class WebConfigReleaseTransformXml extends XmlFile { WebConfigReleaseTransformXml() { this.getName().matches("%Web.Release.config") } } -/** DEPRECATED: Alias for WebConfigXml */ -deprecated class WebConfigXML = WebConfigXml; - /** A `` tag in an ASP.NET configuration file. */ class ConfigurationXmlElement extends XmlElement { ConfigurationXmlElement() { this.getName().toLowerCase() = "configuration" } @@ -31,9 +28,6 @@ class CompilationXmlElement extends XmlElement { CompilationXmlElement() { this.getName().toLowerCase() = "compilation" } } -/** DEPRECATED: Alias for ConfigurationXmlElement */ -deprecated class ConfigurationXMLElement = ConfigurationXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class LocationXmlElement extends XmlElement { LocationXmlElement() { @@ -42,9 +36,6 @@ class LocationXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for LocationXmlElement */ -deprecated class LocationXMLElement = LocationXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class SystemWebXmlElement extends XmlElement { SystemWebXmlElement() { @@ -57,9 +48,6 @@ class SystemWebXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for SystemWebXmlElement */ -deprecated class SystemWebXMLElement = SystemWebXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class SystemWebServerXmlElement extends XmlElement { SystemWebServerXmlElement() { @@ -72,9 +60,6 @@ class SystemWebServerXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for SystemWebServerXmlElement */ -deprecated class SystemWebServerXMLElement = SystemWebServerXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class CustomErrorsXmlElement extends XmlElement { CustomErrorsXmlElement() { @@ -83,9 +68,6 @@ class CustomErrorsXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for CustomErrorsXmlElement */ -deprecated class CustomErrorsXMLElement = CustomErrorsXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class HttpRuntimeXmlElement extends XmlElement { HttpRuntimeXmlElement() { @@ -94,9 +76,6 @@ class HttpRuntimeXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for HttpRuntimeXmlElement */ -deprecated class HttpRuntimeXMLElement = HttpRuntimeXmlElement; - /** A `` tag under `` in an ASP.NET configuration file. */ class FormsElement extends XmlElement { FormsElement() { diff --git a/csharp/ql/lib/semmle/code/cil/Types.qll b/csharp/ql/lib/semmle/code/cil/Types.qll index 0e41fe748f4..2cfc09daf99 100644 --- a/csharp/ql/lib/semmle/code/cil/Types.qll +++ b/csharp/ql/lib/semmle/code/cil/Types.qll @@ -60,11 +60,6 @@ class Class extends ValueOrRefType { Class() { this.isClass() } } -/** A `record`. */ -deprecated class Record extends Class { - Record() { this.isRecord() } -} - /** An `interface`. */ class Interface extends ValueOrRefType { Interface() { this.isInterface() } diff --git a/csharp/ql/lib/semmle/code/csharp/Type.qll b/csharp/ql/lib/semmle/code/csharp/Type.qll index 8bb92c8c86a..85fde20e07d 100644 --- a/csharp/ql/lib/semmle/code/csharp/Type.qll +++ b/csharp/ql/lib/semmle/code/csharp/Type.qll @@ -780,16 +780,6 @@ class Class extends RefType, @class_type { override string getAPrimaryQlClass() { result = "Class" } } -/** - * DEPRECATED: Use `RecordClass` instead. - */ -deprecated class Record extends Class { - Record() { this.isRecord() } - - /** Gets the clone method of this record. */ - RecordCloneMethod getCloneMethod() { result = this.getAMember() } -} - /** * A `record`, for example * diff --git a/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll b/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll index 21102edb755..ca009448c10 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll @@ -200,45 +200,3 @@ predicate sameGvn(ControlFlowElement x, ControlFlowElement y) { pragma[only_bind_into](toGvn(pragma[only_bind_out](x))) = pragma[only_bind_into](toGvn(pragma[only_bind_out](y))) } - -/** - * DEPRECATED: Use `sameGvn` instead. - * - * A configuration for performing structural comparisons of program elements - * (expressions and statements). - * - * The predicate `candidate()` must be overridden, in order to identify the - * elements for which to perform structural comparison. - * - * Each use of the library is identified by a unique string value. - */ -abstract deprecated class StructuralComparisonConfiguration extends string { - bindingset[this] - StructuralComparisonConfiguration() { any() } - - /** - * Holds if elements `x` and `y` are candidates for testing structural - * equality. - * - * Subclasses are expected to override this predicate to identify the - * top-level elements which they want to compare. Care should be - * taken to avoid identifying too many pairs of elements, as in general - * there are very many structurally equal subtrees in a program, and - * in order to keep the computation feasible we must focus attention. - * - * Note that this relation is not expected to be symmetric -- it's - * fine to include a pair `(x, y)` but not `(y, x)`. - * In fact, not including the symmetrically implied fact will save - * half the computation time on the structural comparison. - */ - abstract predicate candidate(ControlFlowElement x, ControlFlowElement y); - - /** - * Holds if elements `x` and `y` structurally equal. `x` and `y` must be - * flagged as candidates for structural equality, that is, - * `candidate(x, y)` must hold. - */ - predicate same(ControlFlowElement x, ControlFlowElement y) { - this.candidate(x, y) and sameGvn(x, y) - } -} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll index 46a19828a81..755b8023040 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll @@ -62,8 +62,8 @@ * in the given range. The range is inclusive at both ends. * - "ReturnValue": Selects the return value of a call to the selected element. * - * For summaries, `input` and `output` may be prefixed by one of the following, - * separated by the "of" keyword: + * For summaries, `input` and `output` may be suffixed by any number of the + * following, separated by ".": * - "Element": Selects an element in a collection. * - "Field[f]": Selects the contents of field `f`. * - "Property[p]": Selects the contents of property `p`. @@ -95,6 +95,7 @@ private import internal.DataFlowPublic private import internal.FlowSummaryImpl::Public private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific +private import codeql.mad.ModelValidation as SharedModelVal /** Holds if a source model exists for the given parameters. */ predicate sourceModel = Extensions::sourceModel/9; @@ -204,30 +205,18 @@ module ModelValidation { ) } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) - or - exists(string kind | sinkModel(_, _, _, _, _, _, _, kind, _) | - not kind = - ["code-injection", "sql-injection", "js-injection", "html-injection", "file-content-store"] and - not kind.matches("encryption-%") and - result = "Invalid kind \"" + kind + "\" in sink model." - ) - or - exists(string kind | sourceModel(_, _, _, _, _, _, _, kind, _) | - not kind = ["local", "remote", "file", "file-write"] and - result = "Invalid kind \"" + kind + "\" in source model." - ) - or - exists(string kind | neutralModel(_, _, _, _, kind, _) | - not kind = ["summary", "source", "sink"] and - result = "Invalid kind \"" + kind + "\" in neutral model." - ) + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } + + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } + + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } + + predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) } } + private module KindVal = SharedModelVal::KindValidation; + private string getInvalidModelSignature() { exists( string pred, string namespace, string type, string name, string signature, string ext, @@ -269,7 +258,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll index 5d90a990979..fef05b35f0b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll @@ -64,14 +64,9 @@ module SummaryComponent { /** Gets a summary component that represents the return value of a call. */ SummaryComponent return() { result = return(any(DataFlowDispatch::NormalReturnKind rk)) } - /** Gets a summary component that represents a jump to `c`. */ - SummaryComponent jump(Callable c) { - result = - return(any(DataFlowDispatch::JumpReturnKind jrk | - jrk.getTarget() = c.getUnboundDeclaration() and - jrk.getTargetReturnKind() instanceof DataFlowDispatch::NormalReturnKind - )) - } + predicate syntheticGlobal = SummaryComponentInternal::syntheticGlobal/1; + + class SyntheticGlobal = SummaryComponentInternal::SyntheticGlobal; } class SummaryComponentStack = Impl::Public::SummaryComponentStack; @@ -110,8 +105,13 @@ module SummaryComponentStack { /** Gets a singleton stack representing the return value of a call. */ SummaryComponentStack return() { result = singleton(SummaryComponent::return()) } - /** Gets a singleton stack representing a jump to `c`. */ - SummaryComponentStack jump(Callable c) { result = singleton(SummaryComponent::jump(c)) } + /** Gets a singleton stack representing a synthetic global with name `name`. */ + SummaryComponentStack syntheticGlobal(string synthetic) { + result = singleton(SummaryComponent::syntheticGlobal(synthetic)) + } + + /** Gets a textual representation of this stack used for flow summaries. */ + string getComponentStack(SummaryComponentStack s) { result = Impl::Public::getComponentStack(s) } } class SummarizedCallable = Impl::Public::SummarizedCallable; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index c3a54ba8ff3..cb26a1c2075 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -74,18 +74,6 @@ newtype TReturnKind = exists(Ssa::ExplicitDefinition def | def.isCapturedVariableDefinitionFlowOut(_, _) | v = def.getSourceVariable().getAssignable() ) - } or - TJumpReturnKind(Callable target, ReturnKind rk) { - target.isUnboundDeclaration() and - ( - rk instanceof NormalReturnKind and - ( - target instanceof Constructor or - not target.getReturnType() instanceof VoidType - ) - or - exists(target.getParameter(rk.(OutRefReturnKind).getPosition())) - ) } /** @@ -128,7 +116,9 @@ private module Cached { // No need to include calls that are compiled from source not call.getImplementation().getMethod().compiledFromSource() } or - TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { + TSummaryCall( + FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver + ) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } @@ -255,27 +245,6 @@ class ImplicitCapturedReturnKind extends ReturnKind, TImplicitCapturedReturnKind override string toString() { result = "captured " + v } } -/** - * A value returned through the output of another callable. - * - * This is currently only used to model flow summaries where data may flow into - * one API entry point and out of another. - */ -class JumpReturnKind extends ReturnKind, TJumpReturnKind { - private Callable target; - private ReturnKind rk; - - JumpReturnKind() { this = TJumpReturnKind(target, rk) } - - /** Gets the target of the jump. */ - Callable getTarget() { result = target } - - /** Gets the return kind of the target. */ - ReturnKind getTargetReturnKind() { result = rk } - - override string toString() { result = "jump to " + target } -} - /** A callable used for data flow. */ class DataFlowCallable extends TDataFlowCallable { /** Get the underlying source code callable, if any. */ @@ -472,12 +441,12 @@ class CilDataFlowCall extends DataFlowCall, TCilCall { */ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { private FlowSummaryImpl::Public::SummarizedCallable c; - private Node receiver; + private FlowSummaryImpl::Private::SummaryNode receiver; SummaryCall() { this = TSummaryCall(c, receiver) } /** Gets the data flow node that this call targets. */ - Node getReceiver() { result = receiver } + FlowSummaryImpl::Private::SummaryNode getReceiver() { result = receiver } override DataFlowCallable getARuntimeTarget() { none() // handled by the shared library diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index d683e03dc2d..872718d93d5 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -500,7 +500,7 @@ module LocalFlow { * inter-procedurality or field-sensitivity. */ predicate excludeFromExposedRelations(Node n) { - n instanceof SummaryNode or + n instanceof FlowSummaryNode or n instanceof ImplicitCapturedArgumentNode } @@ -559,7 +559,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { or LocalFlow::localFlowCapturedVarStep(nodeFrom, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), true) or nodeTo.(ObjectCreationNode).getPreUpdateNode() = nodeFrom.(ObjectInitializerNode) } @@ -805,7 +806,8 @@ private module Cached { // Add artificial dependencies to enforce all cached predicates are evaluated // in the "DataFlowImplCommon stage" - private predicate forceCaching() { + cached + predicate forceCaching() { TaintTrackingPrivate::forceCachingInSameStage() or exists(any(NodeImpl n).getTypeImpl()) or exists(any(NodeImpl n).getControlFlowNodeImpl()) or @@ -815,10 +817,7 @@ private module Cached { cached newtype TNode = - TExprNode(ControlFlow::Nodes::ElementNode cfn) { - forceCaching() and - cfn.getElement() instanceof Expr - } or + TExprNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getElement() instanceof Expr } or TCilExprNode(CIL::Expr e) { e.getImplementation() instanceof CIL::BestImplementation } or TCilSsaDefinitionExtNode(CilSsaImpl::DefinitionExt def) or TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) { @@ -867,12 +866,7 @@ private module Cached { ) ) } or - TSummaryNode(DataFlowSummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } or - TSummaryParameterNode(DataFlowSummarizedCallable c, ParameterPosition pos) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) - } or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TParamsArgumentNode(ControlFlow::Node callCfn) { callCfn = any(Call c | isParamsArg(c, _, _)).getAControlFlowNode() } @@ -977,9 +971,7 @@ predicate nodeIsHidden(Node n) { or n instanceof MallocNode or - n instanceof SummaryNode - or - n instanceof SummaryParameterNode + n instanceof FlowSummaryNode or n instanceof ParamsArgumentNode or @@ -1132,29 +1124,16 @@ private module ParameterNodes { } /** A parameter for a library callable with a flow summary. */ - class SummaryParameterNode extends ParameterNodeImpl, TSummaryParameterNode { - private FlowSummaryImpl::Public::SummarizedCallable sc; + class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode { private ParameterPosition pos_; - SummaryParameterNode() { this = TSummaryParameterNode(sc, pos_) } + SummaryParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), pos_) + } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - sc = c.asSummarizedCallable() and pos = pos_ + this.getSummarizedCallable() = c.asSummarizedCallable() and pos = pos_ } - - override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = sc } - - override Type getTypeImpl() { - exists(int i | pos_.getPosition() = i and result = sc.getParameter(i).getType()) - or - pos_.isThisParameter() and result = sc.getDeclaringType() - } - - override ControlFlow::Node getControlFlowNodeImpl() { none() } - - override EmptyLocation getLocationImpl() { any() } - - override string toStringImpl() { result = "parameter " + pos_ + " of " + sc } } } @@ -1323,11 +1302,16 @@ private module ArgumentNodes { override string toStringImpl() { result = "[implicit array creation] " + callCfn } } - private class SummaryArgumentNode extends SummaryNode, ArgumentNodeImpl { - SummaryArgumentNode() { FlowSummaryImpl::Private::summaryArgumentNode(_, this, _) } + private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNodeImpl { + private DataFlowCall call_; + private ArgumentPosition pos_; + + SummaryArgumentNode() { + FlowSummaryImpl::Private::summaryArgumentNode(call_, this.getSummaryNode(), pos_) + } override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, pos) + call = call_ and pos = pos_ } } } @@ -1469,12 +1453,11 @@ private module ReturnNodes { } } - private class SummaryReturnNode extends SummaryNode, ReturnNode { + private class SummaryReturnNode extends FlowSummaryNode, ReturnNode { private ReturnKind rk; SummaryReturnNode() { - FlowSummaryImpl::Private::summaryReturnNode(this, rk) and - not rk instanceof JumpReturnKind + FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), rk) or exists(Parameter p, int pos | summaryPostUpdateNodeIsOutOrRef(this, p) and @@ -1494,9 +1477,9 @@ private module ReturnNodes { * Holds if summary node `n` is a post-update node for `out`/`ref` parameter `p`. * In this case we adjust it to instead be a return node. */ -private predicate summaryPostUpdateNodeIsOutOrRef(SummaryNode n, Parameter p) { - exists(ParameterNodeImpl pn, DataFlowCallable c, ParameterPosition pos | - FlowSummaryImpl::Private::summaryPostUpdateNode(n, pn) and +private predicate summaryPostUpdateNodeIsOutOrRef(FlowSummaryNode n, Parameter p) { + exists(SummaryParameterNode pn, DataFlowCallable c, ParameterPosition pos | + FlowSummaryImpl::Private::summaryPostUpdateNode(n.getSummaryNode(), pn.getSummaryNode()) and pn.isParameterOf(c, pos) and p = c.asSummarizedCallable().getParameter(pos.getPosition()) and p.isOutOrRef() @@ -1609,37 +1592,43 @@ private module OutNodes { } } - private class SummaryOutNode extends SummaryNode, OutNode { - SummaryOutNode() { FlowSummaryImpl::Private::summaryOutNode(_, this, _) } + private class SummaryOutNode extends FlowSummaryNode, OutNode { + private DataFlowCall call; + private ReturnKind kind_; - override DataFlowCall getCall(ReturnKind kind) { - FlowSummaryImpl::Private::summaryOutNode(result, this, kind) + SummaryOutNode() { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), kind_) } + + override DataFlowCall getCall(ReturnKind kind) { result = call and kind = kind_ } } } import OutNodes /** A data-flow node used to model flow summaries. */ -class SummaryNode extends NodeImpl, TSummaryNode { - private FlowSummaryImpl::Public::SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; +class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) } - SummaryNode() { this = TSummaryNode(c, state) } + FlowSummaryImpl::Public::SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() + } - override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = c } + override DataFlowCallable getEnclosingCallableImpl() { + result.asSummarizedCallable() = this.getSummarizedCallable() + } override DataFlowType getDataFlowType() { - result = FlowSummaryImpl::Private::summaryNodeType(this) + result = FlowSummaryImpl::Private::summaryNodeType(this.getSummaryNode()) } override DotNet::Type getTypeImpl() { none() } override ControlFlow::Node getControlFlowNodeImpl() { none() } - override Location getLocationImpl() { result = c.getLocation() } + override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } - override string toStringImpl() { result = "[summary] " + state + " in " + c } + override string toStringImpl() { result = this.getSummaryNode().toString() } } /** A field or a property. */ @@ -1718,13 +1707,8 @@ predicate jumpStep(Node pred, Node succ) { flr.hasNonlocalValue() ) or - exists(JumpReturnKind jrk, NonDelegateDataFlowCall call | - FlowSummaryImpl::Private::summaryReturnNode(pred, jrk) and - jrk.getTarget() = call.getATarget(_) and - succ = getAnOutNode(call, jrk.getTargetReturnKind()) - ) - or - FlowSummaryImpl::Private::Steps::summaryJumpStep(pred, succ) + FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), + succ.(FlowSummaryNode).getSummaryNode()) } private class StoreStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -1784,7 +1768,8 @@ predicate storeStep(Node node1, Content c, Node node2) { c = getResultContent() ) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) } private class ReadStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -1907,7 +1892,8 @@ predicate readStep(Node node1, Content c, Node node2) { ) ) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -1920,7 +1906,7 @@ predicate clearsContent(Node n, Content c) { or fieldOrPropertyStore(_, c, _, n.(ObjectInitializerNode).getInitializer(), false) or - FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) or exists(WithExpr we, ObjectInitializer oi, FieldOrProperty f | oi = we.getInitializer() and @@ -1935,7 +1921,7 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -1984,6 +1970,21 @@ private class DataFlowUnknownType extends DataFlowType { DataFlowUnknownType() { this = Gvn::getGlobalValueNumber(any(UnknownType ut)) } } +private predicate uselessTypebound(DataFlowType t) { + t instanceof DataFlowUnknownType or + t instanceof Gvn::TypeParameterGvnType +} + +pragma[nomagic] +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { + t1 != t2 and + t1 = getANonTypeParameterSubTypeRestricted(t2) + or + t1 instanceof RelevantDataFlowType and + not uselessTypebound(t1) and + uselessTypebound(t2) +} + /** * Holds if `t1` and `t2` are compatible, that is, whether data can flow from * a node of type `t1` to a node of type `t2`. @@ -2115,15 +2116,15 @@ private module PostUpdateNodes { override string toStringImpl() { result = "[post] " + cfn.toString() } } - private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { + private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryImpl::Private::SummaryNode preUpdateNode; + SummaryPostUpdateNode() { - FlowSummaryImpl::Private::summaryPostUpdateNode(this, _) and + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), preUpdateNode) and not summaryPostUpdateNodeIsOutOrRef(this, _) } - override Node getPreUpdateNode() { - FlowSummaryImpl::Private::summaryPostUpdateNode(this, result) - } + override Node getPreUpdateNode() { result.(FlowSummaryNode).getSummaryNode() = preUpdateNode } } } @@ -2139,6 +2140,12 @@ class CastNode extends Node { } } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + class DataFlowExpr = DotNet::Expr; /** Holds if `e` is an expression that always has the same Boolean value `val`. */ @@ -2218,7 +2225,7 @@ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { call.getControlFlowNode()) ) or - receiver = call.(SummaryCall).getReceiver() + receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() ) and exists(kind) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index b22712087f2..b3599e3404e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -106,16 +106,6 @@ class ParameterNode extends Node instanceof ParameterNodeImpl { result = c.asCallable().getParameter(ppos.getPosition()) ) } - - /** - * DEPRECATED - * - * Holds if this node is the parameter of callable `c` at the specified - * (zero-based) position. - */ - deprecated predicate isParameterOf(DataFlowCallable c, int i) { - super.isParameterOf(c, any(ParameterPosition pos | i = pos.getPosition())) - } } /** A definition, viewed as a node in a data flow graph. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index e6379f6a170..9ea7c44c50c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -180,6 +180,11 @@ module Public { result = "Argument[" + getParameterPosition(pos) + "]" ) or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } @@ -505,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -530,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -559,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -574,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -582,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -605,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -618,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -626,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -634,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -647,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -662,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -675,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -691,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -703,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -713,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -722,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -736,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -748,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -763,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -789,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -801,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -813,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -840,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -852,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -862,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -884,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -909,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -936,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -951,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -962,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -976,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1344,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1357,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1377,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll index 97a27c65ef0..096f3b765f4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll @@ -19,16 +19,20 @@ class SummarizedCallableBase extends Callable { SummarizedCallableBase() { this.isUnboundDeclaration() } } +/** + * A module for importing frameworks that define synthetic globals. + */ +private module SyntheticGlobals { + private import semmle.code.csharp.frameworks.EntityFramework +} + DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c } /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { none() } // disables implicit summary flow to `this` for callbacks -/** Gets the synthesized summary data-flow node for the given values. */ -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = TSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -SummaryCall summaryDataFlowCall(Node receiver) { receiver = result.getReceiver() } +SummaryCall summaryDataFlowCall(SummaryNode receiver) { receiver = result.getReceiver() } /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { @@ -44,7 +48,21 @@ DataFlowType getContentType(Content c) { ) } -private DataFlowType getReturnTypeBase(DotNet::Callable c, ReturnKind rk) { +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { + exists(Type t | result = Gvn::getGlobalValueNumber(t) | + exists(int i | + pos.getPosition() = i and + t = c.getParameter(i).getType() + ) + or + pos.isThisParameter() and + t = c.getDeclaringType() + ) +} + +/** Gets the return type of kind `rk` for callable `c`. */ +DataFlowType getReturnType(DotNet::Callable c, ReturnKind rk) { exists(Type t | result = Gvn::getGlobalValueNumber(t) | rk instanceof NormalReturnKind and ( @@ -58,15 +76,6 @@ private DataFlowType getReturnTypeBase(DotNet::Callable c, ReturnKind rk) { ) } -/** Gets the return type of kind `rk` for callable `c`. */ -bindingset[c] -DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { - result = getReturnTypeBase(c, rk) - or - rk = - any(JumpReturnKind jrk | result = getReturnTypeBase(jrk.getTarget(), jrk.getTargetReturnKind())) -} - /** * Gets the type of the parameter matching arguments at position `pos` in a * synthesized call that targets a callback of type `t`. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index 7a6ca4891a7..53b61ed5974 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -156,7 +156,8 @@ private module Cached { // tracking configurations where the source is a collection readStep(nodeFrom, TElementContent(), nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), false) or nodeTo = nodeFrom.(DataFlow::NonLocalJumpNode).getAJumpSuccessor(false) } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll index e0dfc0d542d..14590895b14 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll @@ -4,6 +4,7 @@ import csharp private import DataFlow +private import semmle.code.csharp.commons.QualifiedName private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.data.Entity private import semmle.code.csharp.frameworks.system.collections.Generic @@ -236,7 +237,7 @@ module EntityFramework { * } * ``` */ - private Property getADbSetProperty(Class elementType) { + Property getADbSetProperty(Class elementType) { exists(ConstructedClass c | result.getType() = c and c.getUnboundDeclaration() instanceof DbSet and @@ -351,22 +352,104 @@ module EntityFramework { /** Holds if component stack `head :: tail` is required for the output specification. */ predicate requiresComponentStackOut( - Content head, Type headType, SummaryComponentStack tail, int dist + Content head, Type headType, SummaryComponentStack tail, int dist, + DbContextClassSetProperty dbSetProp ) { - exists(Property dbSetProp, PropertyContent c1 | + exists(PropertyContent c1 | dbSetProp = this.getADbSetProperty(headType) and this.stepRev(c1, _, head, headType, 0) and c1.getProperty() = dbSetProp and - tail = SummaryComponentStack::jump(dbSetProp.getGetter()) and + tail = SummaryComponentStack::return() and dist = 0 ) or exists(Content tailHead, SummaryComponentStack tailTail, Type tailType | - this.requiresComponentStackOut(tailHead, tailType, tailTail, dist - 1) and + this.requiresComponentStackOut(tailHead, tailType, tailTail, dist - 1, dbSetProp) and tail = SummaryComponentStack::push(SummaryComponent::content(tailHead), tailTail) and this.stepRev(tailHead, tailType, head, headType, dist) ) } + + /** + * Holds if `input` is a valid summary component stack for property `mapped` for this. + */ + pragma[noinline] + predicate input(SummaryComponentStack input, Property mapped) { + exists(PropertyContent head, SummaryComponentStack tail | + this.requiresComponentStackIn(head, _, tail, _) and + head.getProperty() = mapped and + mapped = this.getAColumnProperty(_) and + input = SummaryComponentStack::push(SummaryComponent::content(head), tail) + ) + } + + /** + * Holds if `output` is a valid summary component stack for the getter of `dbSet` + * for property `mapped` for this. + */ + pragma[noinline] + private predicate output( + SummaryComponentStack output, Property mapped, DbContextClassSetProperty dbSet + ) { + exists(PropertyContent head, SummaryComponentStack tail | + this.requiresComponentStackOut(head, _, tail, _, dbSet) and + head.getProperty() = mapped and + mapped = this.getAColumnProperty(_) and + output = SummaryComponentStack::push(SummaryComponent::content(head), tail) + ) + } + + /** + * Gets the synthetic name for the getter of `dbSet` for property `mapped` for this, + * where `output` is a valid summary component stack for the getter of `dbSet` + * for the property `mapped`. + */ + pragma[nomagic] + string getSyntheticName( + SummaryComponentStack output, Property mapped, DbContextClassSetProperty dbSet + ) { + this = dbSet.getDbContextClass() and + this.output(output, mapped, dbSet) and + result = dbSet.getFullName() + "#" + SummaryComponentStack::getComponentStack(output) + } + } + + private class DbContextClassSetProperty extends Property { + private DbContextClass c; + + DbContextClassSetProperty() { this = c.getADbSetProperty(_) } + + /** + * Gets the fully qualified name for this. + */ + string getFullName() { + exists(string qualifier, string type, string name | + this.hasQualifiedName(qualifier, type, name) + | + result = getQualifiedName(qualifier, type, name) + ) + } + + /** + * Gets the context class where this is a DbSet property. + */ + DbContextClass getDbContextClass() { result = c } + } + + private class DbContextClassSetPropertySynthetic extends EFSummarizedCallable { + private DbContextClassSetProperty p; + + DbContextClassSetPropertySynthetic() { this = p.getGetter() } + + override predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + exists(string name, DbContextClass c | + preservesValue = true and + name = c.getSyntheticName(output, _, p) and + input = SummaryComponentStack::syntheticGlobal(name) + ) + } } private class DbContextSaveChanges extends EFSummarizedCallable { @@ -374,44 +457,32 @@ module EntityFramework { DbContextSaveChanges() { this = c.getASaveChanges() } - pragma[noinline] - private predicate input(SummaryComponentStack input, Property mapped) { - exists(PropertyContent head, SummaryComponentStack tail | - c.requiresComponentStackIn(head, _, tail, _) and - head.getProperty() = mapped and - mapped = c.getAColumnProperty(_) and - input = SummaryComponentStack::push(SummaryComponent::content(head), tail) - ) - } - - pragma[noinline] - private predicate output(SummaryComponentStack output, Property mapped) { - exists(PropertyContent head, SummaryComponentStack tail | - c.requiresComponentStackOut(head, _, tail, _) and - head.getProperty() = mapped and - mapped = c.getAColumnProperty(_) and - output = SummaryComponentStack::push(SummaryComponent::content(head), tail) - ) - } - override predicate propagatesFlow( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - exists(Property mapped | + exists(string name, Property mapped | preservesValue = true and - this.input(input, mapped) and - this.output(output, mapped) + c.input(input, mapped) and + name = c.getSyntheticName(_, mapped, _) and + output = SummaryComponentStack::syntheticGlobal(name) ) } } + /** + * Add all possible synthetic global names. + */ + private class EFSummarizedCallableSyntheticGlobal extends SummaryComponent::SyntheticGlobal { + EFSummarizedCallableSyntheticGlobal() { this = any(DbContextClass c).getSyntheticName(_, _, _) } + } + private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack { override predicate required(SummaryComponent head, SummaryComponentStack tail) { exists(Content c | head = SummaryComponent::content(c) | any(DbContextClass cls).requiresComponentStackIn(c, _, tail, _) or - any(DbContextClass cls).requiresComponentStackOut(c, _, tail, _) + any(DbContextClass cls).requiresComponentStackOut(c, _, tail, _, _) ) } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll index 235897f0742..975dae84fcb 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll @@ -14,9 +14,6 @@ private import semmle.code.csharp.dataflow.FlowSummary */ abstract class SafeExternalApiCallable extends Callable { } -/** DEPRECATED: Alias for SafeExternalApiCallable */ -deprecated class SafeExternalAPICallable = SafeExternalApiCallable; - private class SummarizedCallableSafe extends SafeExternalApiCallable instanceof SummarizedCallable { } @@ -87,9 +84,6 @@ class ExternalApiDataNode extends DataFlow::Node { } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** * DEPRECATED: Use `RemoteSourceToExternalApi` instead. * @@ -113,9 +107,6 @@ private module RemoteSourceToExternalApiConfig implements DataFlow::ConfigSig { /** A module for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ module RemoteSourceToExternalApi = TaintTracking::Global; -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A node representing untrusted data being passed to an external API. */ class UntrustedExternalApiDataNode extends ExternalApiDataNode { UntrustedExternalApiDataNode() { RemoteSourceToExternalApi::flow(_, this) } @@ -124,9 +115,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { RemoteSourceToExternalApi::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -161,6 +149,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index 9171bae41b4..3f9c5947b68 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -149,9 +149,6 @@ class LdapEncodeSanitizer extends Sanitizer { } } -/** DEPRECATED: Alias for LdapEncodeSanitizer */ -deprecated class LDAPEncodeSanitizer = LdapEncodeSanitizer; - private class SimpleTypeSanitizer extends Sanitizer, SimpleTypeSanitizedExpr { } private class GuidSanitizer extends Sanitizer, GuidSanitizedExpr { } diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql index e9f9b6cb8c6..3aec796daf7 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql @@ -78,4 +78,4 @@ where exposesByStore(c, f, why, whyText) select c, "'" + c.getName() + "' exposes the internal representation stored in field '" + f.getName() + - "'. The value may be modified $@.", why.getLocation(), whyText + "'. The value may be modified $@.", why, whyText diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index e214ec42a03..8e82ab07313 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.3 + +No user-facing changes. + ## 0.6.2 No user-facing changes. diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 2ebbaa8a362..2813db1cda5 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -26,4 +26,4 @@ where operators = count(BinaryLogicalOperation op | logicalParent*(op, e) and nontrivialLogicalOperator(op)) and operators > 3 -select e.getLocation(), "Complex condition: too many logical operations in this expression." +select e, "Complex condition: too many logical operations in this expression." diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp index bee5d819836..a1f39d27b8c 100644 --- a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp @@ -3,16 +3,15 @@ "qhelp.dtd"> -

Extracting files from a malicious zip archive without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in -archive paths.

+

Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated.

Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine an output file to write the contents of the archive item to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql b/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql index 87850cde7d6..2e4d59aaf7e 100644 --- a/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql +++ b/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during zip extraction ("Zip Slip") - * @description Extracting files from a malicious zip archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id cs/zipslip * @problem.severity error diff --git a/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md b/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..3c13e6da67a --- /dev/null +++ b/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during zip extraction ("Zip Slip")" (`cs/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/csharp/ql/src/change-notes/released/0.6.3.md b/csharp/ql/src/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..83374bcef56 --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.6.3.md @@ -0,0 +1,3 @@ +## 0.6.3 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll b/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll index 169de03c2dc..bb3eb683653 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll @@ -73,9 +73,6 @@ module UnaliasedSsaInstructions { } } -/** DEPRECATED: Alias for UnaliasedSsaInstructions */ -deprecated module UnaliasedSSAInstructions = UnaliasedSsaInstructions; - /** * Provides wrappers for the constructors of each branch of `TInstruction` that is used by the * aliased SSA stage. @@ -107,6 +104,3 @@ module AliasedSsaInstructions { result = TAliasedSsaUnreachedInstruction(irFunc) } } - -/** DEPRECATED: Alias for AliasedSsaInstructions */ -deprecated module AliasedSSAInstructions = AliasedSsaInstructions; diff --git a/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll b/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll index 6327c603901..cf8a6a9b7b1 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll @@ -59,20 +59,12 @@ private module Shared { class TNonSsaMemoryOperand = Internal::TNonSsaMemoryOperand; - /** DEPRECATED: Alias for TNonSsaMemoryOperand */ - deprecated class TNonSSAMemoryOperand = TNonSsaMemoryOperand; - /** * Returns the non-Phi memory operand with the specified parameters. */ TNonSsaMemoryOperand nonSsaMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { result = Internal::TNonSsaMemoryOperand(useInstr, tag) } - - /** DEPRECATED: Alias for nonSsaMemoryOperand */ - deprecated TNonSSAMemoryOperand nonSSAMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { - result = nonSsaMemoryOperand(useInstr, tag) - } } /** @@ -156,6 +148,3 @@ module UnaliasedSsaOperands { */ TChiOperand chiOperand(Unaliased::Instruction useInstr, ChiOperandTag tag) { none() } } - -/** DEPRECATED: Alias for UnaliasedSsaOperands */ -deprecated module UnaliasedSSAOperands = UnaliasedSsaOperands; diff --git a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll index c75c279226d..8297fedb28e 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll @@ -378,12 +378,6 @@ private module Cached { result = getInstructionTranslatedElement(instruction).getAst() } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instruction) { - result = getInstructionAst(instruction) - } - cached CSharpType getInstructionResultType(Instruction instruction) { getInstructionTranslatedElement(instruction) diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll index 43db3c90065..afe98fdb410 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll @@ -17,9 +17,6 @@ abstract class TranslatedCondition extends ConditionBase { final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final Expr getExpr() { result = expr } final override Callable getFunction() { result = expr.getEnclosingCallable() } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll index 20d2b1e3459..23242c75c74 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll @@ -30,9 +30,6 @@ abstract class TranslatedLocalDeclaration extends TranslatedElement, TTranslated final override string toString() { result = expr.toString() } final override Language::AST getAst() { result = expr } - - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll index 4c5ab431dd5..c314d79e3ea 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll @@ -366,9 +366,6 @@ abstract class TranslatedElement extends TTranslatedElement { */ abstract Language::AST getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Get the first instruction to be executed in the evaluation of this element. */ diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll index 67ebf19b766..68070261227 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll @@ -63,9 +63,6 @@ abstract class TranslatedExpr extends TranslatedExprBase { final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = expr.getEnclosingCallable() } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll index 24f340a8718..f0970984d46 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll @@ -30,9 +30,6 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction { final override Language::AST getAst() { result = callable } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - /** * Gets the function being translated. */ @@ -287,9 +284,6 @@ class TranslatedParameter extends TranslatedElement, TTranslatedParameter { final override Language::AST getAst() { result = param } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = param.getCallable() } final override Instruction getFirstInstruction() { diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll index bc127680ca4..c7cb9232d55 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -52,9 +52,6 @@ abstract class TranslatedInitialization extends TranslatedElement, TTranslatedIn final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - /** * Gets the expression that is doing the initialization. */ @@ -210,9 +207,6 @@ abstract class TranslatedElementInitialization extends TranslatedElement { final override Language::AST getAst() { result = initList } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = initList.getEnclosingCallable() } final override Instruction getFirstInstruction() { @@ -319,9 +313,6 @@ abstract class TranslatedConstructorCallFromConstructor extends TranslatedElemen final override Language::AST getAst() { result = call } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override TranslatedElement getChild(int id) { id = 0 and result = this.getConstructorCall() } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll index 1afc48d0409..71d8c42e170 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll @@ -26,9 +26,6 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { final override Language::AST getAst() { result = stmt } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = stmt.getEnclosingCallable() } } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll index 30440235443..2e5908b8194 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll @@ -20,7 +20,4 @@ abstract class TranslatedCompilerGeneratedElement extends TranslatedElement, final override Callable getFunction() { result = generatedBy.getEnclosingCallable() } final override Language::AST getAst() { result = generatedBy } - - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll index f5b0b3af930..5c33ecf5f99 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll @@ -46,9 +46,6 @@ predicate canReuseSsaForVariable(IRAutomaticVariable var) { not allocationEscapes(var) } -/** DEPRECATED: Alias for canReuseSsaForVariable */ -deprecated predicate canReuseSSAForVariable = canReuseSsaForVariable/1; - private newtype TMemoryLocation = MkMemoryLocation(Allocation var) { isVariableModeled(var) } private MemoryLocation getMemoryLocation(Allocation var) { result.getAllocation() = var } @@ -80,9 +77,6 @@ class MemoryLocation extends TMemoryLocation { predicate canReuseSsaForOldResult(Instruction instr) { none() } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - /** * Represents a set of `MemoryLocation`s that cannot overlap with * `MemoryLocation`s outside of the set. The `VirtualVariable` will be diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 95506e0f254..91cba09b8ac 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.6.3-dev +version: 0.6.4-dev groups: - csharp - queries diff --git a/csharp/ql/test/TestUtilities/InlineFlowTest.qll b/csharp/ql/test/TestUtilities/InlineFlowTest.qll index a31d531e1b6..718752a978a 100644 --- a/csharp/ql/test/TestUtilities/InlineFlowTest.qll +++ b/csharp/ql/test/TestUtilities/InlineFlowTest.qll @@ -4,11 +4,12 @@ * Example for a test.ql: * ```ql * import csharp - * import DefaultValueFlow::PathGraph * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph * - * from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink - * where DefaultValueFlow::flowPath(source, sink) + * from PathNode source, PathNode sink + * where flowPath(source, sink) * select sink, source, sink, "$@", source, source.toString() * * ``` @@ -32,14 +33,10 @@ * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -47,8 +44,8 @@ import csharp import TestUtilities.InlineExpectationsTest -private predicate defaultSource(DataFlow::Node src) { - src.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"] +private predicate defaultSource(DataFlow::Node source) { + source.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"] } private predicate defaultSink(DataFlow::Node sink) { @@ -58,42 +55,66 @@ private predicate defaultSink(DataFlow::Node sink) { } module DefaultFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { defaultSource(n) } + predicate isSource(DataFlow::Node source) { defaultSource(source) } - predicate isSink(DataFlow::Node n) { defaultSink(n) } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } int fieldFlowBranchLimit() { result = 1000 } } -module DefaultValueFlow = DataFlow::Global; +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } -module DefaultTaintFlow = TaintTracking::Global; + predicate isSink(DataFlow::Node sink) { none() } +} private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and src.asExpr().(MethodCall).getAnArgument().getValue() = result } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module FlowTest { + module ValueFlow = DataFlow::Global; - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + module TaintFlow = TaintTracking::Global; - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | DefaultValueFlow::flow(src, sink) | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - DefaultTaintFlow::flow(src, sink) and not DefaultValueFlow::flow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | ValueFlow::flow(src, sink) | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + } + } + + import MakeTest + import DataFlow::MergePathGraph + + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) } } + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest +} diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.cs b/csharp/ql/test/experimental/CWE-918/RequestForgery.cs index 32347505b35..02e851d8df1 100644 --- a/csharp/ql/test/experimental/CWE-918/RequestForgery.cs +++ b/csharp/ql/test/experimental/CWE-918/RequestForgery.cs @@ -1,5 +1,3 @@ -// semmle-extractor-options: ${testdir}/../../resources/stubs/System.Web.cs /r:System.Threading.Tasks.dll /r:System.Collections.Specialized.dll /r:System.Runtime.dll /r:System.Private.Uri.dll - using System; using System.Threading.Tasks; using System.Web.Mvc; @@ -38,21 +36,3 @@ namespace RequestForgery.Controllers } } } -// Missing stubs: -namespace System.Net.Http -{ - public class HttpClient - { - public async Task SendAsync(HttpRequestMessage request) => throw null; - } - - public class HttpRequestMessage - { - public HttpRequestMessage(HttpMethod method, string requestUri) => throw null; - } - - public class HttpMethod - { - public static readonly HttpMethod Get; - } -} diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected index fb85f080a4c..4c499ad4be6 100644 --- a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected +++ b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected @@ -1,8 +1,8 @@ edges -| RequestForgery.cs:14:52:14:54 | url : String | RequestForgery.cs:16:66:16:68 | access to parameter url | +| RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | nodes -| RequestForgery.cs:14:52:14:54 | url : String | semmle.label | url : String | -| RequestForgery.cs:16:66:16:68 | access to parameter url | semmle.label | access to parameter url | +| RequestForgery.cs:12:52:12:54 | url : String | semmle.label | url : String | +| RequestForgery.cs:14:66:14:68 | access to parameter url | semmle.label | access to parameter url | subpaths #select -| RequestForgery.cs:16:66:16:68 | access to parameter url | RequestForgery.cs:14:52:14:54 | url : String | RequestForgery.cs:16:66:16:68 | access to parameter url | The URL of this request depends on a $@. | RequestForgery.cs:14:52:14:54 | url | user-provided value | +| RequestForgery.cs:14:66:14:68 | access to parameter url | RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | The URL of this request depends on a $@. | RequestForgery.cs:12:52:12:54 | url | user-provided value | diff --git a/csharp/ql/test/experimental/CWE-918/options b/csharp/ql/test/experimental/CWE-918/options new file mode 100644 index 00000000000..09b08bf4d27 --- /dev/null +++ b/csharp/ql/test/experimental/CWE-918/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../resources/stubs/System.Web.cs \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index d5bbeef765a..1aabed1e806 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -214,8 +214,8 @@ edges | CollectionFlow.cs:385:58:385:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:385:67:385:70 | access to parameter dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:385:67:385:70 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:385:67:385:73 | access to indexer : A | | CollectionFlow.cs:387:59:387:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | -| CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | CollectionFlow.cs:387:68:387:85 | access to property Value : A | +| CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | +| CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | CollectionFlow.cs:387:68:387:85 | access to property Value : A | | CollectionFlow.cs:389:60:389:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:389:69:389:79 | access to property Values : ICollection [element] : A | | CollectionFlow.cs:389:69:389:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:389:69:389:87 | call to method First : A | @@ -223,8 +223,8 @@ edges | CollectionFlow.cs:391:67:391:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:391:67:391:75 | access to property Keys : ICollection [element] : A | | CollectionFlow.cs:391:67:391:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:391:67:391:83 | call to method First : A | | CollectionFlow.cs:393:57:393:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | -| CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | CollectionFlow.cs:393:66:393:81 | access to property Key : A | +| CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | +| CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | CollectionFlow.cs:393:66:393:81 | access to property Key : A | | CollectionFlow.cs:395:49:395:52 | args : A[] [element] : A | CollectionFlow.cs:395:63:395:66 | access to parameter args : A[] [element] : A | | CollectionFlow.cs:395:49:395:52 | args : null [element] : A | CollectionFlow.cs:395:63:395:66 | access to parameter args : null [element] : A | | CollectionFlow.cs:395:63:395:66 | access to parameter args : A[] [element] : A | CollectionFlow.cs:395:63:395:69 | access to array element | @@ -440,7 +440,7 @@ nodes | CollectionFlow.cs:385:67:385:73 | access to indexer : A | semmle.label | access to indexer : A | | CollectionFlow.cs:387:59:387:62 | dict : Dictionary [element, property Value] : A | semmle.label | dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | semmle.label | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | semmle.label | call to method First> : Object [property Value] : A | +| CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | semmle.label | call to method First> : KeyValuePair [property Value] : A | | CollectionFlow.cs:387:68:387:85 | access to property Value : A | semmle.label | access to property Value : A | | CollectionFlow.cs:389:60:389:63 | dict : Dictionary [element, property Value] : A | semmle.label | dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | semmle.label | access to parameter dict : Dictionary [element, property Value] : A | @@ -452,7 +452,7 @@ nodes | CollectionFlow.cs:391:67:391:83 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:393:57:393:60 | dict : Dictionary [element, property Key] : A | semmle.label | dict : Dictionary [element, property Key] : A | | CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | semmle.label | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | semmle.label | call to method First> : Object [property Key] : A | +| CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | semmle.label | call to method First> : KeyValuePair [property Key] : A | | CollectionFlow.cs:393:66:393:81 | access to property Key : A | semmle.label | access to property Key : A | | CollectionFlow.cs:395:49:395:52 | args : A[] [element] : A | semmle.label | args : A[] [element] : A | | CollectionFlow.cs:395:49:395:52 | args : null [element] : A | semmle.label | args : null [element] : A | diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index 723086b649f..610ff1f06d9 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -51,5 +51,5 @@ viableLambda | DelegateFlow.cs:125:9:125:25 | function pointer call | file://:0:0:0:0 | (none) | DelegateFlow.cs:7:17:7:18 | M2 | | DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:40 | call to method M19 | DelegateFlow.cs:135:29:135:36 | (...) => ... | | DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:24 | (...) => ... | -| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | -| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | +| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | +| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs index 05772dfb29a..7a0e896e54d 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs @@ -149,9 +149,9 @@ namespace My.Qltest static T Apply(Func f, S s) => throw null; - static S[] Map(S[] elements, Func f) => throw null; + static T[] Map(S[] elements, Func f) => throw null; - static void Apply2(Action f, S s1, S s2) => throw null; + static void Apply2(Action f, D d1, D d2) => throw null; static void Parse(string s, out int i) => throw null; @@ -235,4 +235,4 @@ namespace My.Qltest static void Sink(object o) { } } -} \ No newline at end of file +} diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index 09ce9945cdf..c69a86a5cb3 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -12,10 +12,10 @@ edges | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | | ExternalFlow.cs:30:26:30:37 | object creation of type Object : Object | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | -| ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | +| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | -| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | +| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | | ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | | ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:27 | access to field Field | @@ -38,8 +38,7 @@ edges | ExternalFlow.cs:72:23:72:23 | o : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | -| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element : Object | -| ExternalFlow.cs:78:18:78:24 | access to array element : Object | ExternalFlow.cs:78:18:78:24 | (...) ... | +| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element | | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | @@ -91,7 +90,7 @@ nodes | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | semmle.label | this access : D [field Field] : Object | | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | semmle.label | call to method StepFieldGetter | | ExternalFlow.cs:36:18:36:69 | access to field Field | semmle.label | access to field Field | -| ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | semmle.label | (...) ... : Object [field Field] : Object | +| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | semmle.label | (...) ... : D [field Field] : Object | | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | semmle.label | [post] this access : D [field Field] : Object | | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | semmle.label | call to method StepFieldSetter : D [field Field2, field Field] : Object | | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | semmle.label | access to field Field2 : Object [field Field] : Object | @@ -124,8 +123,7 @@ nodes | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | semmle.label | access to local variable objs : T[] [element] : Object | -| ExternalFlow.cs:78:18:78:24 | (...) ... | semmle.label | (...) ... | -| ExternalFlow.cs:78:18:78:24 | access to array element : Object | semmle.label | access to array element : Object | +| ExternalFlow.cs:78:18:78:24 | access to array element | semmle.label | access to array element | | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | semmle.label | { ..., ... } : null [element] : Object | | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | @@ -184,7 +182,7 @@ subpaths | ExternalFlow.cs:60:47:60:47 | access to parameter o | ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:47:60:47 | access to parameter o | $@ | ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:66:18:66:18 | access to local variable o | ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:66:18:66:18 | access to local variable o | $@ | ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:72:35:72:35 | access to parameter o | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | $@ | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | object creation of type Object : Object | -| ExternalFlow.cs:78:18:78:24 | (...) ... | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:78:18:78:24 | (...) ... | $@ | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | object creation of type Object : Object | +| ExternalFlow.cs:78:18:78:24 | access to array element | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:78:18:78:24 | access to array element | $@ | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:85:18:85:25 | access to array element | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:85:18:85:25 | access to array element | $@ | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:92:18:92:18 | (...) ... | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:92:18:92:18 | (...) ... | $@ | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | object creation of type String : String | | ExternalFlow.cs:102:22:102:22 | access to parameter d | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | ExternalFlow.cs:102:22:102:22 | access to parameter d | $@ | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | object creation of type Object : Object | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml index f626949e6f4..a2bf0d8b525 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml @@ -16,8 +16,8 @@ extensions: - ["My.Qltest", "D", false, "StepElementSetter", "(System.Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["My.Qltest", "D", false, "Apply<,>", "(System.Func,S)", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Apply<,>", "(System.Func,S)", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["My.Qltest", "D", false, "Apply2<>", "(System.Action,S,S)", "", "Argument[1].Field[My.Qltest.D.Field]", "Argument[0].Parameter[0]", "value", "manual"] - - ["My.Qltest", "D", false, "Apply2<>", "(System.Action,S,S)", "", "Argument[2].Field[My.Qltest.D.Field2]", "Argument[0].Parameter[0]", "value", "manual"] + - ["My.Qltest", "D", false, "Apply2", "(System.Action,My.Qltest.D,My.Qltest.D)", "", "Argument[1].Field[My.Qltest.D.Field]", "Argument[0].Parameter[0]", "value", "manual"] + - ["My.Qltest", "D", false, "Apply2", "(System.Action,My.Qltest.D,My.Qltest.D)", "", "Argument[2].Field[My.Qltest.D.Field2]", "Argument[0].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Map<,>", "(S[],System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Map<,>", "(S[],System.Func)", "", "Argument[1].ReturnValue", "ReturnValue.Element", "value", "manual"] - ["My.Qltest", "D", false, "Parse", "(System.String,System.Int32)", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected index aa9ac0493aa..7466125341d 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected @@ -1,1100 +1,2196 @@ failures +testFailures edges | A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | +| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | | A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | | A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | | A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | | A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | | A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | +| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | | A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | +| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | | A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | +| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | | A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | +| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | | A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | +| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | +| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | | A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | | A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | | A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | | A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | | A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | | A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | +| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | | A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | | A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | +| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | +| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | | A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | | A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | +| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | +| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | | A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | | A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | +| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | +| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | | A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | | A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | +| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | +| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | | A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | +| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | +| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | | A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | +| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | | A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | | A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | +| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | | A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | +| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | | A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | +| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | +| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | +| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | +| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | +| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | | B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | +| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | +| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | +| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | +| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | +| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | +| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | | C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | | C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | | C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | | C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | +| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | +| C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | +| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | +| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | +| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | +| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | +| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | +| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | +| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | | D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | | D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | +| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | +| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | | D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | +| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | +| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | | D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | | D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | +| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | | D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | | D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | | E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | +| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | | E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | +| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | | E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | | F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | +| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | +| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | | F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | | F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | +| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | +| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | | F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | | F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | +| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | | F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | +| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | +| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | | F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | +| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | | F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | | F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | +| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | +| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | +| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | +| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | | G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | +| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | +| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | +| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | | H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | +| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | +| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | | H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | | H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | +| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | | H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | | H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | +| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | +| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | +| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | | H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | +| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | | H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | +| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | +| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | | H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | | H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | +| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | +| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | +| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | +| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | | H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | +| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | | H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | +| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | | I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | | I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | +| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | | I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | +| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | | I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | +| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | | I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | | I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | +| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | | J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | | J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | +| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | +| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | | J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | | J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | +| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | +| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | | J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | +| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | +| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | | J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | +| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | | J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | | J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | +| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | | J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | +| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | +| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | | J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | +| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | | J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | +| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | +| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | +| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | +| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | | J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | nodes | A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | semmle.label | call to method Make : B [field c] : C | | A.cs:6:17:6:25 | call to method Make : B [field c] : C | semmle.label | call to method Make : B [field c] : C | | A.cs:6:24:6:24 | access to local variable c : C | semmle.label | access to local variable c : C | +| A.cs:6:24:6:24 | access to local variable c : C | semmle.label | access to local variable c : C | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | | A.cs:7:14:7:16 | access to field c | semmle.label | access to field c | +| A.cs:7:14:7:16 | access to field c | semmle.label | access to field c | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | semmle.label | [post] access to local variable b : B [field c] : C1 | | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | semmle.label | [post] access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | semmle.label | call to method Source : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | semmle.label | call to method Source : C1 | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | semmle.label | access to local variable b : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | semmle.label | access to local variable b : B [field c] : C1 | | A.cs:14:14:14:20 | call to method Get | semmle.label | call to method Get | +| A.cs:14:14:14:20 | call to method Get | semmle.label | call to method Get | +| A.cs:15:14:15:42 | call to method Get | semmle.label | call to method Get | | A.cs:15:14:15:42 | call to method Get | semmle.label | call to method Get | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | semmle.label | call to method Source : C | | A.cs:15:21:15:34 | call to method Source : C | semmle.label | call to method Source : C | | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:24:14:24:17 | access to field c | semmle.label | access to field c | | A.cs:24:14:24:17 | access to field c | semmle.label | access to field c | | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | semmle.label | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | semmle.label | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:33:14:33:17 | access to field c | semmle.label | access to field c | | A.cs:33:14:33:17 | access to field c | semmle.label | access to field c | | A.cs:36:33:36:33 | c : C2 | semmle.label | c : C2 | +| A.cs:36:33:36:33 | c : C2 | semmle.label | c : C2 | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | semmle.label | ... ? ... : ... : B [field c] : C2 | | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | semmle.label | ... ? ... : ... : B [field c] : C2 | | A.cs:42:29:42:29 | c : C2 | semmle.label | c : C2 | +| A.cs:42:29:42:29 | c : C2 | semmle.label | c : C2 | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | semmle.label | [post] access to local variable b2 : B [field c] : C2 | | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | semmle.label | [post] access to local variable b2 : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | | A.cs:55:17:55:28 | call to method Source : A | semmle.label | call to method Source : A | +| A.cs:55:17:55:28 | call to method Source : A | semmle.label | call to method Source : A | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | semmle.label | [post] access to local variable c1 : C1 [field a] : A | | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | semmle.label | [post] access to local variable c1 : C1 [field a] : A | | A.cs:57:16:57:16 | access to local variable a : A | semmle.label | access to local variable a : A | +| A.cs:57:16:57:16 | access to local variable a : A | semmle.label | access to local variable a : A | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | semmle.label | access to local variable c1 : C1 [field a] : A | | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | semmle.label | access to local variable c1 : C1 [field a] : A | | A.cs:60:22:60:22 | c : C1 [field a] : A | semmle.label | c : C1 [field a] : A | +| A.cs:60:22:60:22 | c : C1 [field a] : A | semmle.label | c : C1 [field a] : A | +| A.cs:64:18:64:26 | access to field a | semmle.label | access to field a | | A.cs:64:18:64:26 | access to field a | semmle.label | access to field a | | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:83:15:83:26 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:89:14:89:16 | access to field c | semmle.label | access to field c | | A.cs:89:14:89:16 | access to field c | semmle.label | access to field c | | A.cs:95:20:95:20 | b : B | semmle.label | b : B | +| A.cs:95:20:95:20 | b : B | semmle.label | b : B | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:97:13:97:13 | access to parameter b : B | semmle.label | access to parameter b : B | +| A.cs:97:13:97:13 | access to parameter b : B | semmle.label | access to parameter b : B | | A.cs:97:19:97:32 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:97:19:97:32 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | semmle.label | [post] this access : D [field b, field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | semmle.label | [post] this access : D [field b, field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | semmle.label | ... ? ... : ... : B [field c] : C | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | semmle.label | ... ? ... : ... : B [field c] : C | +| A.cs:98:30:98:43 | call to method Source : B | semmle.label | call to method Source : B | | A.cs:98:30:98:43 | call to method Source : B | semmle.label | call to method Source : B | | A.cs:104:17:104:30 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:104:17:104:30 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | semmle.label | object creation of type D : D [field b, field c] : C | | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | semmle.label | object creation of type D : D [field b, field c] : C | | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | semmle.label | object creation of type D : D [field b] : B | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | semmle.label | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:105:23:105:23 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:105:23:105:23 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | semmle.label | access to local variable d : D [field b] : B | | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | semmle.label | access to local variable d : D [field b] : B | | A.cs:106:14:106:16 | access to field b | semmle.label | access to field b | +| A.cs:106:14:106:16 | access to field b | semmle.label | access to field b | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | semmle.label | access to local variable d : D [field b, field c] : C | | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | semmle.label | access to local variable d : D [field b, field c] : C | | A.cs:107:14:107:16 | access to field b : B [field c] : C | semmle.label | access to field b : B [field c] : C | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | semmle.label | access to field b : B [field c] : C | +| A.cs:107:14:107:18 | access to field c | semmle.label | access to field c | | A.cs:107:14:107:18 | access to field c | semmle.label | access to field c | | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:108:14:108:16 | access to field c | semmle.label | access to field c | | A.cs:108:14:108:16 | access to field c | semmle.label | access to field c | | A.cs:113:17:113:29 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:113:17:113:29 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | semmle.label | object creation of type MyList : MyList [field head] : B | | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | semmle.label | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:114:29:114:29 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field head] : B | | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | semmle.label | access to local variable l1 : MyList [field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | semmle.label | access to local variable l1 : MyList [field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | semmle.label | access to local variable l2 : MyList [field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | semmle.label | access to local variable l2 : MyList [field next, field head] : B | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | semmle.label | access to local variable l3 : MyList [field next, field next, field head] : B | | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | semmle.label | access to local variable l3 : MyList [field next, field next, field head] : B | | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:119:14:119:30 | access to field head | semmle.label | access to field head | +| A.cs:119:14:119:30 | access to field head | semmle.label | access to field head | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field next, field head] : B | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | semmle.label | access to local variable l : MyList [field head] : B | | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | semmle.label | access to local variable l : MyList [field head] : B | | A.cs:123:18:123:23 | access to field head | semmle.label | access to field head | +| A.cs:123:18:123:23 | access to field head | semmle.label | access to field head | +| A.cs:141:20:141:20 | c : C | semmle.label | c : C | | A.cs:141:20:141:20 | c : C | semmle.label | c : C | | A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | +| A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | +| A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:145:27:145:27 | c : C | semmle.label | c : C | +| A.cs:145:27:145:27 | c : C | semmle.label | c : C | +| A.cs:145:27:145:27 | c : C1 | semmle.label | c : C1 | | A.cs:145:27:145:27 | c : C1 | semmle.label | c : C1 | | A.cs:145:27:145:27 | c : C2 | semmle.label | c : C2 | +| A.cs:145:27:145:27 | c : C2 | semmle.label | c : C2 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | | A.cs:145:32:145:35 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | semmle.label | [post] this access : B [field c] : C1 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | semmle.label | [post] this access : B [field c] : C1 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | semmle.label | [post] this access : B [field c] : C2 | | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | semmle.label | [post] this access : B [field c] : C2 | | A.cs:145:41:145:41 | access to parameter c : C | semmle.label | access to parameter c : C | +| A.cs:145:41:145:41 | access to parameter c : C | semmle.label | access to parameter c : C | +| A.cs:145:41:145:41 | access to parameter c : C1 | semmle.label | access to parameter c : C1 | | A.cs:145:41:145:41 | access to parameter c : C1 | semmle.label | access to parameter c : C1 | | A.cs:145:41:145:41 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:145:41:145:41 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:146:18:146:20 | this : B [field c] : C | semmle.label | this : B [field c] : C | | A.cs:146:18:146:20 | this : B [field c] : C | semmle.label | this : B [field c] : C | | A.cs:146:18:146:20 | this : B [field c] : C1 | semmle.label | this : B [field c] : C1 | +| A.cs:146:18:146:20 | this : B [field c] : C1 | semmle.label | this : B [field c] : C1 | +| A.cs:146:33:146:36 | this access : B [field c] : C | semmle.label | this access : B [field c] : C | | A.cs:146:33:146:36 | this access : B [field c] : C | semmle.label | this access : B [field c] : C | | A.cs:146:33:146:36 | this access : B [field c] : C1 | semmle.label | this access : B [field c] : C1 | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | semmle.label | this access : B [field c] : C1 | +| A.cs:146:33:146:38 | access to field c : C | semmle.label | access to field c : C | | A.cs:146:33:146:38 | access to field c : C | semmle.label | access to field c : C | | A.cs:146:33:146:38 | access to field c : C1 | semmle.label | access to field c : C1 | +| A.cs:146:33:146:38 | access to field c : C1 | semmle.label | access to field c : C1 | +| A.cs:147:32:147:32 | c : C | semmle.label | c : C | | A.cs:147:32:147:32 | c : C | semmle.label | c : C | | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:149:20:149:27 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:157:25:157:28 | head : B | semmle.label | head : B | +| A.cs:157:25:157:28 | head : B | semmle.label | head : B | +| A.cs:157:38:157:41 | next : MyList [field head] : B | semmle.label | next : MyList [field head] : B | | A.cs:157:38:157:41 | next : MyList [field head] : B | semmle.label | next : MyList [field head] : B | | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | semmle.label | next : MyList [field next, field head] : B | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | semmle.label | next : MyList [field next, field head] : B | +| A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | semmle.label | [post] this access : MyList [field head] : B | | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | semmle.label | [post] this access : MyList [field head] : B | | A.cs:159:25:159:28 | access to parameter head : B | semmle.label | access to parameter head : B | +| A.cs:159:25:159:28 | access to parameter head : B | semmle.label | access to parameter head : B | +| A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | semmle.label | [post] this access : MyList [field next, field head] : B | | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | semmle.label | [post] this access : MyList [field next, field head] : B | | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | semmle.label | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | semmle.label | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | semmle.label | access to parameter next : MyList [field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | semmle.label | access to parameter next : MyList [field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | semmle.label | access to parameter next : MyList [field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | semmle.label | access to parameter next : MyList [field next, field head] : B | +| B.cs:5:17:5:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:5:17:5:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem1] : Elem | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem1] : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | semmle.label | access to local variable b1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | semmle.label | access to local variable b1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem1] : Elem | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem1] : Elem | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | semmle.label | access to field box1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | semmle.label | access to field box1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:26 | access to field elem1 | semmle.label | access to field elem1 | +| B.cs:8:14:8:26 | access to field elem1 | semmle.label | access to field elem1 | +| B.cs:14:17:14:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:14:17:14:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | semmle.label | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | semmle.label | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | semmle.label | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | semmle.label | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 | +| B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 | +| B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem | | B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem | | B.cs:29:35:29:36 | e2 : Elem | semmle.label | e2 : Elem | +| B.cs:29:35:29:36 | e2 : Elem | semmle.label | e2 : Elem | +| B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | semmle.label | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | semmle.label | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:26:31:27 | access to parameter e1 : Elem | semmle.label | access to parameter e1 : Elem | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | semmle.label | access to parameter e1 : Elem | +| B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | semmle.label | [post] this access : Box1 [field elem2] : Elem | | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | semmle.label | [post] this access : Box1 [field elem2] : Elem | | B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | semmle.label | b1 : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | semmle.label | b1 : Box1 [field elem2] : Elem | +| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | semmle.label | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | semmle.label | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | semmle.label | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | semmle.label | access to parameter b1 : Box1 [field elem2] : Elem | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | | C.cs:3:23:3:37 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:3:23:3:37 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | | C.cs:4:32:4:46 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:4:32:4:46 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:6:30:6:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:6:30:6:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | +| C.cs:7:37:7:51 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:7:37:7:51 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:8:30:8:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:8:30:8:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | semmle.label | object creation of type C : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | semmle.label | object creation of type C : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | semmle.label | object creation of type C : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | semmle.label | object creation of type C : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | semmle.label | object creation of type C : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | semmle.label | object creation of type C : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | semmle.label | object creation of type C : C [property s5] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | semmle.label | object creation of type C : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | semmle.label | access to local variable c : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | semmle.label | access to local variable c : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | semmle.label | access to local variable c : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | semmle.label | access to local variable c : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem | | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem | | C.cs:18:19:18:33 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:18:19:18:33 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | semmle.label | this : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s1] : Elem | semmle.label | this : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s2] : Elem | semmle.label | this : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | semmle.label | this : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | semmle.label | this : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [field s3] : Elem | semmle.label | this : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [property s5] : Elem | semmle.label | this : C [property s5] : Elem | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | semmle.label | this : C [property s5] : Elem | +| C.cs:23:14:23:15 | access to field s1 | semmle.label | access to field s1 | | C.cs:23:14:23:15 | access to field s1 | semmle.label | access to field s1 | | C.cs:23:14:23:15 | this access : C [field s1] : Elem | semmle.label | this access : C [field s1] : Elem | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | semmle.label | this access : C [field s1] : Elem | +| C.cs:24:14:24:15 | access to field s2 | semmle.label | access to field s2 | | C.cs:24:14:24:15 | access to field s2 | semmle.label | access to field s2 | | C.cs:24:14:24:15 | this access : C [field s2] : Elem | semmle.label | this access : C [field s2] : Elem | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | semmle.label | this access : C [field s2] : Elem | +| C.cs:25:14:25:15 | access to field s3 | semmle.label | access to field s3 | | C.cs:25:14:25:15 | access to field s3 | semmle.label | access to field s3 | | C.cs:25:14:25:15 | this access : C [field s3] : Elem | semmle.label | this access : C [field s3] : Elem | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | semmle.label | this access : C [field s3] : Elem | +| C.cs:26:14:26:15 | access to field s4 | semmle.label | access to field s4 | | C.cs:26:14:26:15 | access to field s4 | semmle.label | access to field s4 | | C.cs:27:14:27:15 | access to property s5 | semmle.label | access to property s5 | +| C.cs:27:14:27:15 | access to property s5 | semmle.label | access to property s5 | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | semmle.label | this access : C [property s5] : Elem | | C.cs:27:14:27:15 | this access : C [property s5] : Elem | semmle.label | this access : C [property s5] : Elem | | C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | +| C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | +| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | +| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | +| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | +| C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | +| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | +| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | +| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | | C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:9:9:9:11 | value : Object | semmle.label | value : Object | +| D.cs:9:9:9:11 | value : Object | semmle.label | value : Object | +| D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:9:39:9:43 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:9:39:9:43 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:15:9:15:11 | value : Object | semmle.label | value : Object | +| D.cs:15:9:15:11 | value : Object | semmle.label | value : Object | +| D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:18:28:18:29 | o1 : Object | semmle.label | o1 : Object | | D.cs:18:28:18:29 | o1 : Object | semmle.label | o1 : Object | | D.cs:18:39:18:40 | o2 : Object | semmle.label | o2 : Object | +| D.cs:18:39:18:40 | o2 : Object | semmle.label | o2 : Object | +| D.cs:18:50:18:51 | o3 : Object | semmle.label | o3 : Object | | D.cs:18:50:18:51 | o3 : Object | semmle.label | o3 : Object | | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | semmle.label | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | semmle.label | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:24:21:25 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | | D.cs:21:24:21:25 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | semmle.label | access to parameter o3 : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | semmle.label | access to parameter o3 : Object | | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | semmle.label | access to local variable ret : D [property AutoProp] : Object | | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | semmle.label | access to local variable ret : D [property AutoProp] : Object | | D.cs:29:17:29:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:29:17:29:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | semmle.label | call to method Create : D [property AutoProp] : Object | | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | semmle.label | call to method Create : D [property AutoProp] : Object | | D.cs:31:24:31:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | semmle.label | access to local variable d : D [property AutoProp] : Object | | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | semmle.label | access to local variable d : D [property AutoProp] : Object | | D.cs:32:14:32:23 | access to property AutoProp | semmle.label | access to property AutoProp | +| D.cs:32:14:32:23 | access to property AutoProp | semmle.label | access to property AutoProp | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:37:26:37:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:37:26:37:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:39:14:39:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:39:14:39:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:40:14:40:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:40:14:40:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:41:14:41:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:41:14:41:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:43:32:43:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:43:32:43:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:45:14:45:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:45:14:45:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:46:14:46:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:46:14:46:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:47:14:47:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:47:14:47:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| E.cs:8:29:8:29 | o : Object | semmle.label | o : Object | | E.cs:8:29:8:29 | o : Object | semmle.label | o : Object | | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | semmle.label | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | semmle.label | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:21:11:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | | E.cs:11:21:11:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | semmle.label | access to local variable ret : S [field Field] : Object | +| E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | semmle.label | access to local variable ret : S [field Field] : Object | +| E.cs:22:17:22:33 | call to method Source : Object | semmle.label | call to method Source : Object | | E.cs:22:17:22:33 | call to method Source : Object | semmle.label | call to method Source : Object | | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | semmle.label | call to method CreateS : S [field Field] : Object | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | semmle.label | call to method CreateS : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | semmle.label | access to local variable s : S [field Field] : Object | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | semmle.label | access to local variable s : S [field Field] : Object | +| E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field | | E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field | | F.cs:6:28:6:29 | o1 : Object | semmle.label | o1 : Object | +| F.cs:6:28:6:29 | o1 : Object | semmle.label | o1 : Object | +| F.cs:6:39:6:40 | o2 : Object | semmle.label | o2 : Object | | F.cs:6:39:6:40 | o2 : Object | semmle.label | o2 : Object | | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | semmle.label | object creation of type F : F [field Field1] : Object | +| F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | semmle.label | object creation of type F : F [field Field1] : Object | +| F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | semmle.label | object creation of type F : F [field Field2] : Object | | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | semmle.label | object creation of type F : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:6:65:6:66 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | +| F.cs:6:65:6:66 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | +| F.cs:6:78:6:79 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | F.cs:6:78:6:79 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | F.cs:10:17:10:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:10:17:10:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | semmle.label | call to method Create : F [field Field1] : Object | | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | semmle.label | call to method Create : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:12:14:12:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:12:14:12:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | semmle.label | call to method Create : F [field Field2] : Object | | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | semmle.label | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:15:26:15:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:17:14:17:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:17:14:17:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | | F.cs:19:32:19:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:19:32:19:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:20:14:20:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:20:14:20:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:23:32:23:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:23:32:23:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:25:14:25:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:25:14:25:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:30:17:30:33 | call to method Source : Object | semmle.label | call to method Source : Object | | F.cs:30:17:30:33 | call to method Source : Object | semmle.label | call to method Source : Object | | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | +| F.cs:32:27:32:27 | access to local variable o : Object | semmle.label | access to local variable o : Object | | F.cs:32:27:32:27 | access to local variable o : Object | semmle.label | access to local variable o : Object | | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:33:14:33:16 | access to property X | semmle.label | access to property X | | F.cs:33:14:33:16 | access to property X | semmle.label | access to property X | | G.cs:7:18:7:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:7:18:7:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:23:9:23 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:9:23:9:23 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:15:18:15:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:15:18:15:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:23:18:23:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:23:18:23:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:25:28:25:28 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:25:28:25:28 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:31:18:31:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:31:18:31:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:35 | call to method GetElem | semmle.label | call to method GetElem | | G.cs:39:14:39:35 | call to method GetElem | semmle.label | call to method GetElem | | G.cs:44:18:44:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:44:18:44:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:46:30:46:30 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:46:30:46:30 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:31 | access to field Elem | semmle.label | access to field Elem | +| G.cs:52:14:52:31 | access to field Elem | semmle.label | access to field Elem | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | semmle.label | this : Box1 [field Elem] : Elem | | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | semmle.label | this : Box1 [field Elem] : Elem | | G.cs:63:34:63:37 | access to field Elem : Elem | semmle.label | access to field Elem : Elem | +| G.cs:63:34:63:37 | access to field Elem : Elem | semmle.label | access to field Elem : Elem | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem | | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem | | G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem | +| G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem | +| G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | semmle.label | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | semmle.label | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:46:64:46 | access to parameter e : Elem | semmle.label | access to parameter e : Elem | +| G.cs:64:46:64:46 | access to parameter e : Elem | semmle.label | access to parameter e : Elem | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | semmle.label | this : Box2 [field Box1, field Elem] : Elem | | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | semmle.label | this : Box2 [field Box1, field Elem] : Elem | | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | semmle.label | this access : Box2 [field Box1, field Elem] : Elem | | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | semmle.label | this access : Box2 [field Box1, field Elem] : Elem | | H.cs:13:15:13:15 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | semmle.label | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | semmle.label | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:16:22:16:29 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | | H.cs:16:22:16:29 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | semmle.label | access to local variable ret : A [field FieldA] : Object | +| H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | semmle.label | access to local variable ret : A [field FieldA] : Object | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:20:23:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:23:20:23:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | semmle.label | call to method Clone : A [field FieldA] : Object | | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | semmle.label | call to method Clone : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | semmle.label | access to local variable clone : A [field FieldA] : Object | | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | semmle.label | access to local variable clone : A [field FieldA] : Object | | H.cs:25:14:25:25 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:25:14:25:25 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | semmle.label | a : A [field FieldA] : A | | H.cs:33:19:33:19 | a : A [field FieldA] : A | semmle.label | a : A [field FieldA] : A | | H.cs:33:19:33:19 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | semmle.label | [post] access to local variable b : B [field FieldB] : A | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | semmle.label | [post] access to local variable b : B [field FieldB] : A | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | semmle.label | access to parameter a : A [field FieldA] : A | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | semmle.label | access to parameter a : A [field FieldA] : A | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:36:20:36:27 | access to field FieldA : A | semmle.label | access to field FieldA : A | | H.cs:36:20:36:27 | access to field FieldA : A | semmle.label | access to field FieldA : A | | H.cs:36:20:36:27 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:36:20:36:27 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | semmle.label | access to local variable b : B [field FieldB] : A | | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | semmle.label | access to local variable b : B [field FieldB] : A | | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:20:43:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:43:20:43:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:45:14:45:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:45:14:45:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:55:21:55:28 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:55:21:55:28 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:63:20:63:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:63:20:63:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:77:30:77:30 | o : Object | semmle.label | o : Object | | H.cs:77:30:77:30 | o : Object | semmle.label | o : Object | | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object | +| H.cs:79:20:79:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:79:20:79:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:88:20:88:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:89:14:89:21 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:89:14:89:21 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:90:14:90:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:90:14:90:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:102:23:102:23 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | +| H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | semmle.label | (...) ... : A [field FieldA] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | semmle.label | (...) ... : A [field FieldA] : Object | | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | semmle.label | access to field FieldB : A [field FieldA] : Object | | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | semmle.label | access to field FieldB : A [field FieldA] : Object | | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:112:20:112:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:112:20:112:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | semmle.label | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | semmle.label | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:114:14:114:21 | access to field FieldB | semmle.label | access to field FieldB | | H.cs:114:14:114:21 | access to field FieldB | semmle.label | access to field FieldB | | H.cs:122:18:122:18 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:124:16:124:34 | access to field FieldB : Object | semmle.label | access to field FieldB : Object | +| H.cs:124:16:124:34 | access to field FieldB : Object | semmle.label | access to field FieldB : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:130:20:130:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:130:20:130:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:131:14:131:19 | call to method Get | semmle.label | call to method Get | +| H.cs:131:14:131:19 | call to method Get | semmle.label | call to method Get | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:138:27:138:27 | o : A | semmle.label | o : A | +| H.cs:138:27:138:27 | o : A | semmle.label | o : A | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | semmle.label | [post] access to local variable a : A [field FieldA] : A | | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | semmle.label | [post] access to local variable a : A [field FieldA] : A | | H.cs:141:20:141:25 | ... as ... : A | semmle.label | ... as ... : A | +| H.cs:141:20:141:25 | ... as ... : A | semmle.label | ... as ... : A | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | semmle.label | call to method Transform : B [field FieldB] : A | | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | semmle.label | call to method Transform : B [field FieldB] : A | | H.cs:142:16:142:34 | access to field FieldB : A | semmle.label | access to field FieldB : A | +| H.cs:142:16:142:34 | access to field FieldB : A | semmle.label | access to field FieldB : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | semmle.label | access to local variable a : A [field FieldA] : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | semmle.label | access to local variable a : A [field FieldA] : A | | H.cs:147:17:147:39 | call to method Through : A | semmle.label | call to method Through : A | +| H.cs:147:17:147:39 | call to method Through : A | semmle.label | call to method Through : A | +| H.cs:147:25:147:38 | call to method Source : A | semmle.label | call to method Source : A | | H.cs:147:25:147:38 | call to method Source : A | semmle.label | call to method Source : A | | H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a | +| H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a | +| H.cs:153:32:153:32 | o : Object | semmle.label | o : Object | | H.cs:153:32:153:32 | o : Object | semmle.label | o : Object | | H.cs:155:17:155:30 | call to method Source : B | semmle.label | call to method Source : B | +| H.cs:155:17:155:30 | call to method Source : B | semmle.label | call to method Source : B | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:156:9:156:9 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:156:20:156:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:156:20:156:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | semmle.label | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | semmle.label | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:157:20:157:20 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:163:17:163:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:163:17:163:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | semmle.label | [post] access to local variable a : A [field FieldA] : B | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | semmle.label | [post] access to local variable a : A [field FieldA] : B | +| H.cs:164:22:164:22 | access to local variable o : Object | semmle.label | access to local variable o : Object | | H.cs:164:22:164:22 | access to local variable o : Object | semmle.label | access to local variable o : Object | | H.cs:165:17:165:27 | (...) ... : B | semmle.label | (...) ... : B | +| H.cs:165:17:165:27 | (...) ... : B | semmle.label | (...) ... : B | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | semmle.label | (...) ... : B [field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | semmle.label | (...) ... : B [field FieldB] : Object | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | semmle.label | access to local variable a : A [field FieldA] : B | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | semmle.label | access to local variable a : A [field FieldA] : B | | H.cs:165:20:165:27 | access to field FieldA : B | semmle.label | access to field FieldA : B | +| H.cs:165:20:165:27 | access to field FieldA : B | semmle.label | access to field FieldA : B | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | semmle.label | access to field FieldA : B [field FieldB] : Object | | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | semmle.label | access to field FieldA : B [field FieldB] : Object | | H.cs:166:14:166:14 | access to local variable b | semmle.label | access to local variable b | +| H.cs:166:14:166:14 | access to local variable b | semmle.label | access to local variable b | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object | | I.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| I.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| I.cs:13:17:13:33 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:13:17:13:33 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:20:15:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:15:20:15:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:18:14:18:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | semmle.label | object creation of type I : I [field Field1] : Object | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | semmle.label | object creation of type I : I [field Field1] : Object | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:23:14:23:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:23:14:23:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | semmle.label | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | semmle.label | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:21 | access to field Field1 | semmle.label | access to field Field1 | +| I.cs:27:14:27:21 | access to field Field1 | semmle.label | access to field Field1 | +| I.cs:31:13:31:29 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:31:13:31:29 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:32:20:32:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:32:20:32:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:37:23:37:23 | i : I [field Field1] : Object | semmle.label | i : I [field Field1] : Object | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | semmle.label | i : I [field Field1] : Object | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | +| I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 | | J.cs:14:26:14:30 | field : Object | semmle.label | field : Object | +| J.cs:14:26:14:30 | field : Object | semmle.label | field : Object | +| J.cs:14:40:14:43 | prop : Object | semmle.label | prop : Object | | J.cs:14:40:14:43 | prop : Object | semmle.label | prop : Object | | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | semmle.label | [post] this access : Struct [field Field] : Object | +| J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | semmle.label | [post] this access : Struct [field Field] : Object | +| J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | semmle.label | [post] this access : Struct [property Prop] : Object | | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | semmle.label | [post] this access : Struct [property Prop] : Object | | J.cs:14:66:14:70 | access to parameter field : Object | semmle.label | access to parameter field : Object | +| J.cs:14:66:14:70 | access to parameter field : Object | semmle.label | access to parameter field : Object | +| J.cs:14:73:14:76 | access to parameter prop : Object | semmle.label | access to parameter prop : Object | | J.cs:14:73:14:76 | access to parameter prop : Object | semmle.label | access to parameter prop : Object | | J.cs:21:17:21:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:21:17:21:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | semmle.label | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | semmle.label | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:34:22:34 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:22:34:22:34 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r1 : RecordClass [property Prop1] : Object | | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r1 : RecordClass [property Prop1] : Object | | J.cs:23:14:23:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:23:14:23:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:27:14:27:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:27:14:27:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | semmle.label | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | semmle.label | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:36:30:52 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:30:36:30:52 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop1] : Object | | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop1] : Object | | J.cs:31:14:31:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:31:14:31:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop2] : Object | | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop2] : Object | | J.cs:32:14:32:21 | access to property Prop2 | semmle.label | access to property Prop2 | +| J.cs:32:14:32:21 | access to property Prop2 | semmle.label | access to property Prop2 | +| J.cs:41:17:41:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:41:17:41:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | semmle.label | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | semmle.label | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:35:42:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:42:35:42:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r1 : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r1 : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:43:14:43:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:47:14:47:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:47:14:47:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | semmle.label | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | semmle.label | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:36:50:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:50:36:50:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop1] : Object | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop1] : Object | +| J.cs:51:14:51:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:51:14:51:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop2] : Object | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop2] : Object | +| J.cs:52:14:52:21 | access to property Prop2 | semmle.label | access to property Prop2 | | J.cs:52:14:52:21 | access to property Prop2 | semmle.label | access to property Prop2 | | J.cs:61:17:61:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:61:17:61:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | semmle.label | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | semmle.label | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | semmle.label | access to local variable s2 : Struct [field Field] : Object | | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | semmle.label | access to local variable s2 : Struct [field Field] : Object | | J.cs:65:14:65:21 | access to field Field | semmle.label | access to field Field | +| J.cs:65:14:65:21 | access to field Field | semmle.label | access to field Field | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | semmle.label | ... with { ... } : Struct [property Prop] : Object | | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | semmle.label | ... with { ... } : Struct [property Prop] : Object | | J.cs:68:35:68:51 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:68:35:68:51 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | | J.cs:69:14:69:21 | access to field Field | semmle.label | access to field Field | +| J.cs:69:14:69:21 | access to field Field | semmle.label | access to field Field | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | | J.cs:70:14:70:20 | access to property Prop | semmle.label | access to property Prop | +| J.cs:70:14:70:20 | access to property Prop | semmle.label | access to property Prop | +| J.cs:79:17:79:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:79:17:79:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | semmle.label | object creation of type Struct : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | semmle.label | object creation of type Struct : Struct [property Prop] : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:80:35:80:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | semmle.label | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | semmle.label | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:84:14:84:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:84:14:84:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | semmle.label | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | semmle.label | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:36:86:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:86:36:86:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | +| J.cs:87:14:87:21 | access to field Field | semmle.label | access to field Field | | J.cs:87:14:87:21 | access to field Field | semmle.label | access to field Field | | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | +| J.cs:88:14:88:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:88:14:88:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:97:17:97:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:97:17:97:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | | J.cs:99:28:99:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:99:28:99:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a2 : <>__AnonType0 [property X] : Object | | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a2 : <>__AnonType0 [property X] : Object | | J.cs:102:14:102:17 | access to property X | semmle.label | access to property X | +| J.cs:102:14:102:17 | access to property X | semmle.label | access to property X | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | semmle.label | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | semmle.label | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:32:105:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:105:32:105:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:106:14:106:17 | access to property X | semmle.label | access to property X | +| J.cs:106:14:106:17 | access to property X | semmle.label | access to property X | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property Y] : Object | | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property Y] : Object | | J.cs:107:14:107:17 | access to property Y | semmle.label | access to property Y | +| J.cs:107:14:107:17 | access to property Y | semmle.label | access to property Y | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | semmle.label | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | semmle.label | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:20:119:34 | call to method Source : Int32 | semmle.label | call to method Source : Int32 | +| J.cs:119:20:119:34 | call to method Source : Int32 | semmle.label | call to method Source : Int32 | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | semmle.label | access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | semmle.label | access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:17 | (...) ... | semmle.label | (...) ... | +| J.cs:125:14:125:17 | (...) ... | semmle.label | (...) ... | +| J.cs:125:14:125:17 | access to array element : Int32 | semmle.label | access to array element : Int32 | | J.cs:125:14:125:17 | access to array element : Int32 | semmle.label | access to array element : Int32 | subpaths | A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get | | A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:45:14:45:26 | access to property TrivialProp | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:45:14:45:26 | access to property TrivialProp | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:47:14:47:26 | access to property ComplexProp | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:47:14:47:26 | access to property ComplexProp | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | G.cs:39:14:39:35 | call to method GetElem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | G.cs:39:14:39:35 | call to method GetElem | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | #select | A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source : C | call to method Source : C | +| A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source : C | call to method Source : C | +| A.cs:14:14:14:20 | call to method Get | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:14:14:14:20 | call to method Get | $@ | A.cs:13:15:13:29 | call to method Source : C1 | call to method Source : C1 | | A.cs:14:14:14:20 | call to method Get | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:14:14:14:20 | call to method Get | $@ | A.cs:13:15:13:29 | call to method Source : C1 | call to method Source : C1 | | A.cs:15:14:15:42 | call to method Get | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:14:15:42 | call to method Get | $@ | A.cs:15:21:15:34 | call to method Source : C | call to method Source : C | +| A.cs:15:14:15:42 | call to method Get | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:14:15:42 | call to method Get | $@ | A.cs:15:21:15:34 | call to method Source : C | call to method Source : C | +| A.cs:24:14:24:17 | access to field c | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:24:14:24:17 | access to field c | $@ | A.cs:22:25:22:37 | call to method Source : C2 | call to method Source : C2 | | A.cs:24:14:24:17 | access to field c | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:24:14:24:17 | access to field c | $@ | A.cs:22:25:22:37 | call to method Source : C2 | call to method Source : C2 | | A.cs:33:14:33:17 | access to field c | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:33:14:33:17 | access to field c | $@ | A.cs:31:29:31:41 | call to method Source : C2 | call to method Source : C2 | +| A.cs:33:14:33:17 | access to field c | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:33:14:33:17 | access to field c | $@ | A.cs:31:29:31:41 | call to method Source : C2 | call to method Source : C2 | +| A.cs:64:18:64:26 | access to field a | A.cs:55:17:55:28 | call to method Source : A | A.cs:64:18:64:26 | access to field a | $@ | A.cs:55:17:55:28 | call to method Source : A | call to method Source : A | | A.cs:64:18:64:26 | access to field a | A.cs:55:17:55:28 | call to method Source : A | A.cs:64:18:64:26 | access to field a | $@ | A.cs:55:17:55:28 | call to method Source : A | call to method Source : A | | A.cs:89:14:89:16 | access to field c | A.cs:83:15:83:26 | call to method Source : C | A.cs:89:14:89:16 | access to field c | $@ | A.cs:83:15:83:26 | call to method Source : C | call to method Source : C | +| A.cs:89:14:89:16 | access to field c | A.cs:83:15:83:26 | call to method Source : C | A.cs:89:14:89:16 | access to field c | $@ | A.cs:83:15:83:26 | call to method Source : C | call to method Source : C | +| A.cs:106:14:106:16 | access to field b | A.cs:98:30:98:43 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:98:30:98:43 | call to method Source : B | call to method Source : B | | A.cs:106:14:106:16 | access to field b | A.cs:98:30:98:43 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:98:30:98:43 | call to method Source : B | call to method Source : B | | A.cs:106:14:106:16 | access to field b | A.cs:104:17:104:30 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:104:17:104:30 | call to method Source : B | call to method Source : B | +| A.cs:106:14:106:16 | access to field b | A.cs:104:17:104:30 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:104:17:104:30 | call to method Source : B | call to method Source : B | +| A.cs:107:14:107:18 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:107:14:107:18 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | | A.cs:107:14:107:18 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:107:14:107:18 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | | A.cs:108:14:108:16 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:108:14:108:16 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | +| A.cs:108:14:108:16 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:108:14:108:16 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | +| A.cs:119:14:119:30 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:119:14:119:30 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | | A.cs:119:14:119:30 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:119:14:119:30 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | | A.cs:123:18:123:23 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:123:18:123:23 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | +| A.cs:123:18:123:23 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:123:18:123:23 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | +| B.cs:8:14:8:26 | access to field elem1 | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:8:14:8:26 | access to field elem1 | $@ | B.cs:5:17:5:31 | call to method Source : Elem | call to method Source : Elem | | B.cs:8:14:8:26 | access to field elem1 | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:8:14:8:26 | access to field elem1 | $@ | B.cs:5:17:5:31 | call to method Source : Elem | call to method Source : Elem | | B.cs:18:14:18:26 | access to field elem2 | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:18:14:18:26 | access to field elem2 | $@ | B.cs:14:17:14:31 | call to method Source : Elem | call to method Source : Elem | +| B.cs:18:14:18:26 | access to field elem2 | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:18:14:18:26 | access to field elem2 | $@ | B.cs:14:17:14:31 | call to method Source : Elem | call to method Source : Elem | +| C.cs:23:14:23:15 | access to field s1 | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:23:14:23:15 | access to field s1 | $@ | C.cs:3:23:3:37 | call to method Source : Elem | call to method Source : Elem | | C.cs:23:14:23:15 | access to field s1 | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:23:14:23:15 | access to field s1 | $@ | C.cs:3:23:3:37 | call to method Source : Elem | call to method Source : Elem | | C.cs:24:14:24:15 | access to field s2 | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:24:14:24:15 | access to field s2 | $@ | C.cs:4:32:4:46 | call to method Source : Elem | call to method Source : Elem | +| C.cs:24:14:24:15 | access to field s2 | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:24:14:24:15 | access to field s2 | $@ | C.cs:4:32:4:46 | call to method Source : Elem | call to method Source : Elem | +| C.cs:25:14:25:15 | access to field s3 | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:25:14:25:15 | access to field s3 | $@ | C.cs:18:19:18:33 | call to method Source : Elem | call to method Source : Elem | | C.cs:25:14:25:15 | access to field s3 | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:25:14:25:15 | access to field s3 | $@ | C.cs:18:19:18:33 | call to method Source : Elem | call to method Source : Elem | | C.cs:26:14:26:15 | access to field s4 | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | $@ | C.cs:6:30:6:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:26:14:26:15 | access to field s4 | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | $@ | C.cs:6:30:6:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:27:14:27:15 | access to property s5 | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:27:14:27:15 | access to property s5 | $@ | C.cs:7:37:7:51 | call to method Source : Elem | call to method Source : Elem | | C.cs:27:14:27:15 | access to property s5 | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:27:14:27:15 | access to property s5 | $@ | C.cs:7:37:7:51 | call to method Source : Elem | call to method Source : Elem | | C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | +| C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | | C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | | C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | +| C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | +| D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:39:14:39:26 | access to property TrivialProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:39:14:39:26 | access to property TrivialProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:39:14:39:26 | access to property TrivialProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:39:14:39:26 | access to property TrivialProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:40:14:40:31 | access to field trivialPropField | D.cs:37:26:37:42 | call to method Source : Object | D.cs:40:14:40:31 | access to field trivialPropField | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | | D.cs:40:14:40:31 | access to field trivialPropField | D.cs:37:26:37:42 | call to method Source : Object | D.cs:40:14:40:31 | access to field trivialPropField | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | | D.cs:41:14:41:26 | access to property ComplexProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:41:14:41:26 | access to property ComplexProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:41:14:41:26 | access to property ComplexProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:41:14:41:26 | access to property ComplexProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:45:14:45:26 | access to property TrivialProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:45:14:45:26 | access to property TrivialProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:45:14:45:26 | access to property TrivialProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:45:14:45:26 | access to property TrivialProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:46:14:46:31 | access to field trivialPropField | D.cs:43:32:43:48 | call to method Source : Object | D.cs:46:14:46:31 | access to field trivialPropField | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | +| D.cs:46:14:46:31 | access to field trivialPropField | D.cs:43:32:43:48 | call to method Source : Object | D.cs:46:14:46:31 | access to field trivialPropField | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | +| D.cs:47:14:47:26 | access to property ComplexProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:47:14:47:26 | access to property ComplexProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:47:14:47:26 | access to property ComplexProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:47:14:47:26 | access to property ComplexProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | E.cs:24:14:24:20 | access to field Field | E.cs:22:17:22:33 | call to method Source : Object | E.cs:24:14:24:20 | access to field Field | $@ | E.cs:22:17:22:33 | call to method Source : Object | call to method Source : Object | +| E.cs:24:14:24:20 | access to field Field | E.cs:22:17:22:33 | call to method Source : Object | E.cs:24:14:24:20 | access to field Field | $@ | E.cs:22:17:22:33 | call to method Source : Object | call to method Source : Object | +| F.cs:12:14:12:21 | access to field Field1 | F.cs:10:17:10:33 | call to method Source : Object | F.cs:12:14:12:21 | access to field Field1 | $@ | F.cs:10:17:10:33 | call to method Source : Object | call to method Source : Object | | F.cs:12:14:12:21 | access to field Field1 | F.cs:10:17:10:33 | call to method Source : Object | F.cs:12:14:12:21 | access to field Field1 | $@ | F.cs:10:17:10:33 | call to method Source : Object | call to method Source : Object | | F.cs:17:14:17:21 | access to field Field2 | F.cs:15:26:15:42 | call to method Source : Object | F.cs:17:14:17:21 | access to field Field2 | $@ | F.cs:15:26:15:42 | call to method Source : Object | call to method Source : Object | +| F.cs:17:14:17:21 | access to field Field2 | F.cs:15:26:15:42 | call to method Source : Object | F.cs:17:14:17:21 | access to field Field2 | $@ | F.cs:15:26:15:42 | call to method Source : Object | call to method Source : Object | +| F.cs:20:14:20:21 | access to field Field1 | F.cs:19:32:19:48 | call to method Source : Object | F.cs:20:14:20:21 | access to field Field1 | $@ | F.cs:19:32:19:48 | call to method Source : Object | call to method Source : Object | | F.cs:20:14:20:21 | access to field Field1 | F.cs:19:32:19:48 | call to method Source : Object | F.cs:20:14:20:21 | access to field Field1 | $@ | F.cs:19:32:19:48 | call to method Source : Object | call to method Source : Object | | F.cs:25:14:25:21 | access to field Field2 | F.cs:23:32:23:48 | call to method Source : Object | F.cs:25:14:25:21 | access to field Field2 | $@ | F.cs:23:32:23:48 | call to method Source : Object | call to method Source : Object | +| F.cs:25:14:25:21 | access to field Field2 | F.cs:23:32:23:48 | call to method Source : Object | F.cs:25:14:25:21 | access to field Field2 | $@ | F.cs:23:32:23:48 | call to method Source : Object | call to method Source : Object | +| F.cs:33:14:33:16 | access to property X | F.cs:30:17:30:33 | call to method Source : Object | F.cs:33:14:33:16 | access to property X | $@ | F.cs:30:17:30:33 | call to method Source : Object | call to method Source : Object | | F.cs:33:14:33:16 | access to property X | F.cs:30:17:30:33 | call to method Source : Object | F.cs:33:14:33:16 | access to property X | $@ | F.cs:30:17:30:33 | call to method Source : Object | call to method Source : Object | | G.cs:39:14:39:35 | call to method GetElem | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:7:18:7:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:7:18:7:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:15:18:15:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:15:18:15:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:23:18:23:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:23:18:23:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:31:18:31:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:31:18:31:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:52:14:52:31 | access to field Elem | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:52:14:52:31 | access to field Elem | $@ | G.cs:44:18:44:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:52:14:52:31 | access to field Elem | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:52:14:52:31 | access to field Elem | $@ | G.cs:44:18:44:32 | call to method Source : Elem | call to method Source : Elem | +| H.cs:25:14:25:25 | access to field FieldA | H.cs:23:20:23:36 | call to method Source : Object | H.cs:25:14:25:25 | access to field FieldA | $@ | H.cs:23:20:23:36 | call to method Source : Object | call to method Source : Object | | H.cs:25:14:25:25 | access to field FieldA | H.cs:23:20:23:36 | call to method Source : Object | H.cs:25:14:25:25 | access to field FieldA | $@ | H.cs:23:20:23:36 | call to method Source : Object | call to method Source : Object | | H.cs:45:14:45:21 | access to field FieldB | H.cs:43:20:43:36 | call to method Source : Object | H.cs:45:14:45:21 | access to field FieldB | $@ | H.cs:43:20:43:36 | call to method Source : Object | call to method Source : Object | +| H.cs:45:14:45:21 | access to field FieldB | H.cs:43:20:43:36 | call to method Source : Object | H.cs:45:14:45:21 | access to field FieldB | $@ | H.cs:43:20:43:36 | call to method Source : Object | call to method Source : Object | +| H.cs:65:14:65:22 | access to field FieldB | H.cs:63:20:63:36 | call to method Source : Object | H.cs:65:14:65:22 | access to field FieldB | $@ | H.cs:63:20:63:36 | call to method Source : Object | call to method Source : Object | | H.cs:65:14:65:22 | access to field FieldB | H.cs:63:20:63:36 | call to method Source : Object | H.cs:65:14:65:22 | access to field FieldB | $@ | H.cs:63:20:63:36 | call to method Source : Object | call to method Source : Object | | H.cs:89:14:89:21 | access to field FieldA | H.cs:88:20:88:36 | call to method Source : Object | H.cs:89:14:89:21 | access to field FieldA | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | +| H.cs:89:14:89:21 | access to field FieldA | H.cs:88:20:88:36 | call to method Source : Object | H.cs:89:14:89:21 | access to field FieldA | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | +| H.cs:90:14:90:22 | access to field FieldB | H.cs:88:20:88:36 | call to method Source : Object | H.cs:90:14:90:22 | access to field FieldB | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | | H.cs:90:14:90:22 | access to field FieldB | H.cs:88:20:88:36 | call to method Source : Object | H.cs:90:14:90:22 | access to field FieldB | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | | H.cs:114:14:114:21 | access to field FieldB | H.cs:112:20:112:36 | call to method Source : Object | H.cs:114:14:114:21 | access to field FieldB | $@ | H.cs:112:20:112:36 | call to method Source : Object | call to method Source : Object | +| H.cs:114:14:114:21 | access to field FieldB | H.cs:112:20:112:36 | call to method Source : Object | H.cs:114:14:114:21 | access to field FieldB | $@ | H.cs:112:20:112:36 | call to method Source : Object | call to method Source : Object | +| H.cs:131:14:131:19 | call to method Get | H.cs:130:20:130:36 | call to method Source : Object | H.cs:131:14:131:19 | call to method Get | $@ | H.cs:130:20:130:36 | call to method Source : Object | call to method Source : Object | | H.cs:131:14:131:19 | call to method Get | H.cs:130:20:130:36 | call to method Source : Object | H.cs:131:14:131:19 | call to method Get | $@ | H.cs:130:20:130:36 | call to method Source : Object | call to method Source : Object | | H.cs:148:14:148:14 | access to local variable a | H.cs:147:25:147:38 | call to method Source : A | H.cs:148:14:148:14 | access to local variable a | $@ | H.cs:147:25:147:38 | call to method Source : A | call to method Source : A | +| H.cs:148:14:148:14 | access to local variable a | H.cs:147:25:147:38 | call to method Source : A | H.cs:148:14:148:14 | access to local variable a | $@ | H.cs:147:25:147:38 | call to method Source : A | call to method Source : A | +| H.cs:166:14:166:14 | access to local variable b | H.cs:155:17:155:30 | call to method Source : B | H.cs:166:14:166:14 | access to local variable b | $@ | H.cs:155:17:155:30 | call to method Source : B | call to method Source : B | | H.cs:166:14:166:14 | access to local variable b | H.cs:155:17:155:30 | call to method Source : B | H.cs:166:14:166:14 | access to local variable b | $@ | H.cs:155:17:155:30 | call to method Source : B | call to method Source : B | | H.cs:167:14:167:21 | access to field FieldB | H.cs:163:17:163:35 | call to method Source : Object | H.cs:167:14:167:21 | access to field FieldB | $@ | H.cs:163:17:163:35 | call to method Source : Object | call to method Source : Object | +| H.cs:167:14:167:21 | access to field FieldB | H.cs:163:17:163:35 | call to method Source : Object | H.cs:167:14:167:21 | access to field FieldB | $@ | H.cs:163:17:163:35 | call to method Source : Object | call to method Source : Object | +| I.cs:18:14:18:21 | access to field Field1 | I.cs:13:17:13:33 | call to method Source : Object | I.cs:18:14:18:21 | access to field Field1 | $@ | I.cs:13:17:13:33 | call to method Source : Object | call to method Source : Object | | I.cs:18:14:18:21 | access to field Field1 | I.cs:13:17:13:33 | call to method Source : Object | I.cs:18:14:18:21 | access to field Field1 | $@ | I.cs:13:17:13:33 | call to method Source : Object | call to method Source : Object | | I.cs:23:14:23:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:23:14:23:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| I.cs:23:14:23:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:23:14:23:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| I.cs:27:14:27:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:27:14:27:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | I.cs:27:14:27:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:27:14:27:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | I.cs:40:14:40:21 | access to field Field1 | I.cs:31:13:31:29 | call to method Source : Object | I.cs:40:14:40:21 | access to field Field1 | $@ | I.cs:31:13:31:29 | call to method Source : Object | call to method Source : Object | +| I.cs:40:14:40:21 | access to field Field1 | I.cs:31:13:31:29 | call to method Source : Object | I.cs:40:14:40:21 | access to field Field1 | $@ | I.cs:31:13:31:29 | call to method Source : Object | call to method Source : Object | +| J.cs:23:14:23:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:23:14:23:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:23:14:23:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:23:14:23:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:27:14:27:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:27:14:27:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | +| J.cs:27:14:27:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:27:14:27:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | +| J.cs:31:14:31:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:31:14:31:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:31:14:31:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:31:14:31:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:32:14:32:21 | access to property Prop2 | J.cs:30:36:30:52 | call to method Source : Object | J.cs:32:14:32:21 | access to property Prop2 | $@ | J.cs:30:36:30:52 | call to method Source : Object | call to method Source : Object | +| J.cs:32:14:32:21 | access to property Prop2 | J.cs:30:36:30:52 | call to method Source : Object | J.cs:32:14:32:21 | access to property Prop2 | $@ | J.cs:30:36:30:52 | call to method Source : Object | call to method Source : Object | +| J.cs:43:14:43:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:43:14:43:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:43:14:43:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:43:14:43:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:47:14:47:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:47:14:47:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | +| J.cs:47:14:47:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:47:14:47:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | +| J.cs:51:14:51:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:51:14:51:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:51:14:51:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:51:14:51:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:52:14:52:21 | access to property Prop2 | J.cs:50:36:50:52 | call to method Source : Object | J.cs:52:14:52:21 | access to property Prop2 | $@ | J.cs:50:36:50:52 | call to method Source : Object | call to method Source : Object | +| J.cs:52:14:52:21 | access to property Prop2 | J.cs:50:36:50:52 | call to method Source : Object | J.cs:52:14:52:21 | access to property Prop2 | $@ | J.cs:50:36:50:52 | call to method Source : Object | call to method Source : Object | +| J.cs:65:14:65:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:65:14:65:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | | J.cs:65:14:65:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:65:14:65:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | | J.cs:69:14:69:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:69:14:69:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | +| J.cs:69:14:69:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:69:14:69:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | +| J.cs:70:14:70:20 | access to property Prop | J.cs:68:35:68:51 | call to method Source : Object | J.cs:70:14:70:20 | access to property Prop | $@ | J.cs:68:35:68:51 | call to method Source : Object | call to method Source : Object | | J.cs:70:14:70:20 | access to property Prop | J.cs:68:35:68:51 | call to method Source : Object | J.cs:70:14:70:20 | access to property Prop | $@ | J.cs:68:35:68:51 | call to method Source : Object | call to method Source : Object | | J.cs:84:14:84:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:84:14:84:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:84:14:84:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:84:14:84:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:87:14:87:21 | access to field Field | J.cs:86:36:86:52 | call to method Source : Object | J.cs:87:14:87:21 | access to field Field | $@ | J.cs:86:36:86:52 | call to method Source : Object | call to method Source : Object | | J.cs:87:14:87:21 | access to field Field | J.cs:86:36:86:52 | call to method Source : Object | J.cs:87:14:87:21 | access to field Field | $@ | J.cs:86:36:86:52 | call to method Source : Object | call to method Source : Object | | J.cs:88:14:88:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:88:14:88:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:88:14:88:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:88:14:88:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:102:14:102:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:102:14:102:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | | J.cs:102:14:102:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:102:14:102:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | | J.cs:106:14:106:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:106:14:106:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | +| J.cs:106:14:106:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:106:14:106:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | +| J.cs:107:14:107:17 | access to property Y | J.cs:105:32:105:48 | call to method Source : Object | J.cs:107:14:107:17 | access to property Y | $@ | J.cs:105:32:105:48 | call to method Source : Object | call to method Source : Object | | J.cs:107:14:107:17 | access to property Y | J.cs:105:32:105:48 | call to method Source : Object | J.cs:107:14:107:17 | access to property Y | $@ | J.cs:105:32:105:48 | call to method Source : Object | call to method Source : Object | | J.cs:125:14:125:17 | (...) ... | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:125:14:125:17 | (...) ... | $@ | J.cs:119:20:119:34 | call to method Source : Int32 | call to method Source : Int32 | +| J.cs:125:14:125:17 | (...) ... | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:125:14:125:17 | (...) ... | $@ | J.cs:119:20:119:34 | call to method Source : Int32 | call to method Source : Int32 | diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index bce1914e42b..767e66301ce 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -267,7 +267,7 @@ edges | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:31:514:32 | [post] access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:36:514:37 | [post] access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:42:514:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:544:20:544:20 | [post] access to local variable x : SimpleClass [field field] : String | @@ -286,8 +286,8 @@ edges | GlobalDataFlow.cs:515:15:515:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:515:15:515:22 | access to field field | | GlobalDataFlow.cs:516:15:516:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:22 | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:22 | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:534:15:534:15 | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | @@ -579,8 +579,8 @@ nodes | GlobalDataFlow.cs:516:15:516:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:526:15:526:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 5dae90d82a6..dec8a134712 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -293,7 +293,7 @@ edges | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:31:514:32 | [post] access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:36:514:37 | [post] access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:42:514:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:544:20:544:20 | [post] access to local variable x : SimpleClass [field field] : String | @@ -312,8 +312,8 @@ edges | GlobalDataFlow.cs:515:15:515:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:515:15:515:22 | access to field field | | GlobalDataFlow.cs:516:15:516:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:22 | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:22 | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:534:15:534:15 | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | @@ -633,8 +633,8 @@ nodes | GlobalDataFlow.cs:516:15:516:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:526:15:526:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 46defadf531..70b7ae5b121 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1087,7 +1087,7 @@ summary | System.Collections.Generic;List<>;false;Add;(System.Object);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;Add;(T);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this].Element;value;manual | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Collections.Generic;List<>;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[this];Argument[0].Element;taint;df-generated | @@ -1101,13 +1101,11 @@ summary | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections.Generic;List<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | @@ -1231,7 +1229,7 @@ summary | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | @@ -1290,7 +1288,6 @@ summary | System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | @@ -1487,12 +1484,10 @@ summary | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | @@ -1520,7 +1515,7 @@ summary | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | @@ -1537,8 +1532,8 @@ summary | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[this];ReturnValue;taint;df-generated | @@ -1676,7 +1671,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;df-generated | @@ -1703,7 +1698,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | @@ -1897,7 +1892,7 @@ summary | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Collections.Specialized;OrderedDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -1938,21 +1933,19 @@ summary | System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections;ArrayList;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | @@ -1960,7 +1953,7 @@ summary | System.Collections;ArrayList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;ArrayList;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;BitArray;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;BitArray;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[this];ReturnValue;value;df-generated | @@ -2007,7 +2000,7 @@ summary | System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;Hashtable;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Hashtable;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | @@ -2055,7 +2048,7 @@ summary | System.Collections;IList;true;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;Queue;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Queue;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Queue;false;Dequeue;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -2071,7 +2064,7 @@ summary | System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;SortedList;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;SortedList;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | | System.Collections;SortedList;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -2093,7 +2086,7 @@ summary | System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;Stack;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Stack;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Stack;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;Stack;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | @@ -3090,7 +3083,7 @@ summary | System.Data;InternalDataCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Data;InternalDataCollectionBase;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;PropertyCollection;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBase<>;false;Cast<>;();;Argument[this];ReturnValue;taint;df-generated | | System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -7346,8 +7339,6 @@ summary | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | @@ -10702,7 +10693,7 @@ summary | System;Array;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System;Array;false;Clear;(System.Array);;Argument[0].WithoutElement;Argument[0];value;manual | | System;Array;false;Clear;(System.Array,System.Int32,System.Int32);;Argument[0].WithoutElement;Argument[0];value;manual | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 4ae26655169..e1af1614843 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -707,7 +707,7 @@ summary | System.Collections.Generic;LinkedListNode<>;false;set_Value;(T);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;List<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this].Element;value;manual | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | @@ -716,11 +716,9 @@ summary | System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | @@ -786,7 +784,7 @@ summary | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | @@ -837,7 +835,6 @@ summary | System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | @@ -971,10 +968,8 @@ summary | System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | @@ -992,7 +987,7 @@ summary | System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | @@ -1008,8 +1003,8 @@ summary | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[this];ReturnValue;taint;df-generated | @@ -1106,7 +1101,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Immutable.ImmutableSortedSet+Builder);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;df-generated | @@ -1124,7 +1119,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | @@ -1237,7 +1232,7 @@ summary | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[2];Argument[this];taint;df-generated | | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_NewItems;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Int32,System.Collections.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | @@ -1258,24 +1253,22 @@ summary | System.Collections;ArrayList;false;Adapter;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;Not;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;Or;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | @@ -1300,7 +1293,7 @@ summary | System.Collections;DictionaryEntry;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;DictionaryEntry;false;set_Key;(System.Object);;Argument[0];Argument[this];taint;df-generated | | System.Collections;DictionaryEntry;false;set_Value;(System.Object);;Argument[0];Argument[this];taint;df-generated | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Hashtable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | @@ -1341,7 +1334,7 @@ summary | System.Collections;IList;true;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;Queue;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Queue;false;Dequeue;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[this];taint;df-generated | | System.Collections;Queue;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | @@ -1350,7 +1343,7 @@ summary | System.Collections;Queue;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;ReadOnlyCollectionBase;false;get_InnerList;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;ReadOnlyCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | | System.Collections;SortedList;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;SortedList;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | @@ -1365,7 +1358,7 @@ summary | System.Collections;SortedList;false;Synchronized;(System.Collections.SortedList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;SortedList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;Stack;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Stack;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | | System.Collections;Stack;false;Pop;();;Argument[this].Element;ReturnValue;value;manual | | System.Collections;Stack;false;Push;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -2244,7 +2237,7 @@ summary | System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[this].Element;ReturnValue;value;manual | | System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;PropertyCollection;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBase<>;false;Cast<>;();;Argument[this];ReturnValue;taint;df-generated | | System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value;manual | @@ -6001,8 +5994,6 @@ summary | System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[this];taint;df-generated | | System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[this];ReturnValue;taint;df-generated | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Runtime.CompilerServices;RuntimeWrappedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Runtime.CompilerServices;RuntimeWrappedException;false;RuntimeWrappedException;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -9028,7 +9019,7 @@ summary | System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | | System;Array;false;Clear;(System.Array);;Argument[0].WithoutElement;Argument[0];value;manual | | System;Array;false;Clear;(System.Array,System.Int32,System.Int32);;Argument[0].WithoutElement;Argument[0];value;manual | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;df-generated | | System;Array;false;Fill<>;(T[],T,System.Int32,System.Int32);;Argument[1];Argument[0].Element;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected index 7b173a98e41..2bddf573b6a 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected @@ -1,95 +1,186 @@ failures +testFailures edges | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | +| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | +| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | +| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | +| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | +| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | +| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | +| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | | Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | +| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | +| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | | Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | +| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | +| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | | Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | | Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | +| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | +| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | | Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | +| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | +| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | | Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | | Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | +| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | +| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | | Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | +| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | +| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | | Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | | Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | +| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | +| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | | Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | +| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | +| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | | Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | nodes | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | +| Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | +| Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:16:38:16:38 | x : C | semmle.label | x : C | +| Operator.cs:16:38:16:38 | x : C | semmle.label | x : C | +| Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:18:51:18:51 | y : C | semmle.label | y : C | +| Operator.cs:18:51:18:51 | y : C | semmle.label | y : C | +| Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:19:38:19:38 | x : C | semmle.label | x : C | +| Operator.cs:19:38:19:38 | x : C | semmle.label | x : C | +| Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:21:43:21:43 | y : C | semmle.label | y : C | +| Operator.cs:21:43:21:43 | y : C | semmle.label | y : C | +| Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:22:51:22:51 | y : C | semmle.label | y : C | +| Operator.cs:22:51:22:51 | y : C | semmle.label | y : C | +| Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:27:17:27:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:27:17:27:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C | +| Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C | +| Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:35:17:35:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:35:17:35:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C | +| Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C | +| Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:44:17:44:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:44:17:44:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C | | Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C | +| Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:49:28:49:28 | x : C | semmle.label | x : C | +| Operator.cs:49:28:49:28 | x : C | semmle.label | x : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C | +| Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C | +| Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:57:17:57:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:57:17:57:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:62:33:62:33 | y : C | semmle.label | y : C | +| Operator.cs:62:33:62:33 | y : C | semmle.label | y : C | +| Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C | | Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C | | Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:71:17:71:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:71:17:71:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:75:33:75:33 | y : C | semmle.label | y : C | +| Operator.cs:75:33:75:33 | y : C | semmle.label | y : C | +| Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C | | Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:84:17:84:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:84:17:84:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | subpaths | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | #select | Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source : C | call to method Source : C | +| Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source : C | call to method Source : C | +| Operator.cs:38:14:38:14 | access to local variable z | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:38:14:38:14 | access to local variable z | $@ | Operator.cs:35:17:35:28 | call to method Source : C | call to method Source : C | | Operator.cs:38:14:38:14 | access to local variable z | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:38:14:38:14 | access to local variable z | $@ | Operator.cs:35:17:35:28 | call to method Source : C | call to method Source : C | | Operator.cs:46:14:46:14 | access to local variable z | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:46:14:46:14 | access to local variable z | $@ | Operator.cs:44:17:44:28 | call to method Source : C | call to method Source : C | +| Operator.cs:46:14:46:14 | access to local variable z | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:46:14:46:14 | access to local variable z | $@ | Operator.cs:44:17:44:28 | call to method Source : C | call to method Source : C | +| Operator.cs:52:14:52:14 | (...) ... | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:52:14:52:14 | (...) ... | $@ | Operator.cs:57:17:57:28 | call to method Source : C | call to method Source : C | | Operator.cs:52:14:52:14 | (...) ... | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:52:14:52:14 | (...) ... | $@ | Operator.cs:57:17:57:28 | call to method Source : C | call to method Source : C | | Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source : C | call to method Source : C | +| Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source : C | call to method Source : C | +| Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | | Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected index f965891244c..f2ab31c12b3 100644 --- a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected @@ -1,4 +1,5 @@ failures +testFailures edges nodes subpaths diff --git a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected index dae85aa45aa..10b9a4b66ac 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected @@ -1,233 +1,462 @@ failures +testFailures edges | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | +| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | +| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | | Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | | Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | | Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | | Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | +| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | +| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | +| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | | Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | +| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | +| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | +| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | | Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | | Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | | Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | +| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | | Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | nodes | Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:8:18:8:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:8:18:8:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:11:9:11:27 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:11:9:11:27 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:12:14:12:14 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:12:14:12:14 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:14:14:14:14 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:14:14:14:14 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:16:9:16:23 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:16:9:16:23 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:17:14:17:14 | access to local variable a | semmle.label | access to local variable a | | Tuples.cs:17:14:17:14 | access to local variable a | semmle.label | access to local variable a | | Tuples.cs:19:14:19:14 | access to local variable c | semmle.label | access to local variable c | +| Tuples.cs:19:14:19:14 | access to local variable c | semmle.label | access to local variable c | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | semmle.label | SSA def(p) : Object | | Tuples.cs:21:9:21:26 | SSA def(p) : Object | semmle.label | SSA def(p) : Object | | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | semmle.label | SSA def(q) : ValueTuple [field Item2] : Object | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | semmle.label | SSA def(q) : ValueTuple [field Item2] : Object | +| Tuples.cs:22:14:22:14 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:22:14:22:14 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | semmle.label | access to local variable q : ValueTuple [field Item2] : Object | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | semmle.label | access to local variable q : ValueTuple [field Item2] : Object | +| Tuples.cs:24:14:24:20 | access to field Item2 | semmle.label | access to field Item2 | | Tuples.cs:24:14:24:20 | access to field Item2 | semmle.label | access to field Item2 | | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:26:14:26:20 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:26:14:26:20 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:27:14:27:16 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:27:14:27:16 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | semmle.label | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | semmle.label | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | semmle.label | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | semmle.label | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:26 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:29:14:29:26 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:34:18:34:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:34:18:34:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:35:18:35:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:35:18:35:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | semmle.label | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | semmle.label | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:38:14:38:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:38:14:38:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | semmle.label | access to local variable x : ValueTuple> [field Item10] : Object | | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | semmle.label | access to local variable x : ValueTuple> [field Item10] : Object | | Tuples.cs:40:14:40:21 | access to field Item10 | semmle.label | access to field Item10 | +| Tuples.cs:40:14:40:21 | access to field Item10 | semmle.label | access to field Item10 | +| Tuples.cs:45:17:45:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:45:17:45:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | semmle.label | (...) ... : ValueTuple [field Item1] : String | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | semmle.label | (...) ... : ValueTuple [field Item1] : String | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | semmle.label | (..., ...) : ValueTuple [field Item1] : String | | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | semmle.label | (..., ...) : ValueTuple [field Item1] : String | | Tuples.cs:46:48:46:48 | access to local variable o : String | semmle.label | access to local variable o : String | +| Tuples.cs:46:48:46:48 | access to local variable o : String | semmle.label | access to local variable o : String | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | semmle.label | access to local variable x : ValueTuple [field Item1] : String | | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | semmle.label | access to local variable x : ValueTuple [field Item1] : String | | Tuples.cs:47:14:47:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:47:14:47:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:57:18:57:34 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:57:18:57:34 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:58:18:58:34 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:58:18:58:34 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | | Tuples.cs:59:18:59:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | | Tuples.cs:59:26:59:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:63:22:63:28 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:63:22:63:28 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | semmle.label | access to field Item2 : ValueTuple [field Item2] : String | | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | semmle.label | access to field Item2 : ValueTuple [field Item2] : String | | Tuples.cs:64:22:64:34 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:64:22:64:34 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:67:23:67:23 | SSA def(a) : String | semmle.label | SSA def(a) : String | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | semmle.label | SSA def(a) : String | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | semmle.label | SSA def(c) : String | | Tuples.cs:67:30:67:30 | SSA def(c) : String | semmle.label | SSA def(c) : String | | Tuples.cs:68:22:68:22 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:68:22:68:22 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:69:22:69:22 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:69:22:69:22 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | semmle.label | SSA def(p) : String | | Tuples.cs:87:23:87:23 | SSA def(p) : String | semmle.label | SSA def(p) : String | | Tuples.cs:87:30:87:30 | SSA def(r) : String | semmle.label | SSA def(r) : String | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | semmle.label | SSA def(r) : String | +| Tuples.cs:89:18:89:18 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:89:18:89:18 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r | +| Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r | +| Tuples.cs:99:17:99:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:99:17:99:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | semmle.label | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | semmle.label | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:24:100:24 | access to local variable o : String | semmle.label | access to local variable o : String | | Tuples.cs:100:24:100:24 | access to local variable o : String | semmle.label | access to local variable o : String | | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | semmle.label | access to local variable r : R1 [property i] : String | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | semmle.label | access to local variable r : R1 [property i] : String | +| Tuples.cs:101:14:101:16 | access to property i | semmle.label | access to property i | | Tuples.cs:101:14:101:16 | access to property i | semmle.label | access to property i | | Tuples.cs:118:17:118:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | semmle.label | SSA def(x1) : Object | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | semmle.label | SSA def(x1) : Object | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:28:121:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:122:14:122:15 | access to local variable x1 | semmle.label | access to local variable x1 | | Tuples.cs:122:14:122:15 | access to local variable x1 | semmle.label | access to local variable x1 | | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | semmle.label | SSA def(x2) : Object | | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | semmle.label | SSA def(x2) : Object | | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | Tuples.cs:125:25:125:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | Tuples.cs:126:14:126:15 | access to local variable x2 | semmle.label | access to local variable x2 | +| Tuples.cs:126:14:126:15 | access to local variable x2 | semmle.label | access to local variable x2 | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | semmle.label | SSA def(y3) : Object | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | semmle.label | SSA def(y3) : Object | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:31:129:31 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:130:14:130:15 | access to local variable y3 | semmle.label | access to local variable y3 | | Tuples.cs:130:14:130:15 | access to local variable y3 | semmle.label | access to local variable y3 | | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | semmle.label | SSA def(y4) : Object | | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | semmle.label | SSA def(y4) : Object | | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:28:133:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | | Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | subpaths #select | Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:14:14:14:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:14:14:14:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:14:14:14:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:14:14:14:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:17:14:17:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:17:14:17:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:17:14:17:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:17:14:17:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:19:14:19:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:19:14:19:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:19:14:19:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:19:14:19:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:22:14:22:14 | access to local variable p | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:22:14:22:14 | access to local variable p | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:22:14:22:14 | access to local variable p | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:22:14:22:14 | access to local variable p | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:24:14:24:20 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:24:14:24:20 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:24:14:24:20 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:24:14:24:20 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:26:14:26:20 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:26:14:26:20 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:26:14:26:20 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:26:14:26:20 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:27:14:27:16 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:27:14:27:16 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:27:14:27:16 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:27:14:27:16 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:29:14:29:26 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:29:14:29:26 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:29:14:29:26 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:29:14:29:26 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:38:14:38:20 | access to field Item1 | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:38:14:38:20 | access to field Item1 | $@ | Tuples.cs:34:18:34:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:38:14:38:20 | access to field Item1 | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:38:14:38:20 | access to field Item1 | $@ | Tuples.cs:34:18:34:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:40:14:40:21 | access to field Item10 | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:40:14:40:21 | access to field Item10 | $@ | Tuples.cs:35:18:35:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:40:14:40:21 | access to field Item10 | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:40:14:40:21 | access to field Item10 | $@ | Tuples.cs:35:18:35:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:47:14:47:20 | access to field Item1 | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:47:14:47:20 | access to field Item1 | $@ | Tuples.cs:45:17:45:33 | call to method Source : String | call to method Source : String | | Tuples.cs:47:14:47:20 | access to field Item1 | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:47:14:47:20 | access to field Item1 | $@ | Tuples.cs:45:17:45:33 | call to method Source : String | call to method Source : String | | Tuples.cs:63:22:63:28 | access to field Item1 | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:63:22:63:28 | access to field Item1 | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:63:22:63:28 | access to field Item1 | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:63:22:63:28 | access to field Item1 | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:64:22:64:34 | access to field Item2 | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:64:22:64:34 | access to field Item2 | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:64:22:64:34 | access to field Item2 | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:64:22:64:34 | access to field Item2 | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:68:22:68:22 | access to local variable a | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:68:22:68:22 | access to local variable a | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:68:22:68:22 | access to local variable a | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:68:22:68:22 | access to local variable a | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:69:22:69:22 | access to local variable c | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:69:22:69:22 | access to local variable c | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:69:22:69:22 | access to local variable c | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:69:22:69:22 | access to local variable c | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:89:18:89:18 | access to local variable p | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:89:18:89:18 | access to local variable p | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:89:18:89:18 | access to local variable p | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:89:18:89:18 | access to local variable p | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:90:18:90:18 | access to local variable r | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:90:18:90:18 | access to local variable r | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:90:18:90:18 | access to local variable r | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:90:18:90:18 | access to local variable r | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:101:14:101:16 | access to property i | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:101:14:101:16 | access to property i | $@ | Tuples.cs:99:17:99:33 | call to method Source : String | call to method Source : String | +| Tuples.cs:101:14:101:16 | access to property i | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:101:14:101:16 | access to property i | $@ | Tuples.cs:99:17:99:33 | call to method Source : String | call to method Source : String | +| Tuples.cs:122:14:122:15 | access to local variable x1 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:122:14:122:15 | access to local variable x1 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:126:14:126:15 | access to local variable x2 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:126:14:126:15 | access to local variable x2 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:130:14:130:15 | access to local variable y3 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:130:14:130:15 | access to local variable y3 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected index 811f1a04d8b..a9d4895fb46 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected @@ -74,14 +74,14 @@ edges | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | -| EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | -| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
: Object [property Street] : String | -| EntityFramework.cs:212:18:212:38 | call to method First
: Object [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | -| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | -| EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
: Object [property Street] : String | -| EntityFramework.cs:219:18:219:54 | call to method First
: Object [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | +| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | +| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | +| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | +| EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | +| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | +| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | +| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | +| EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | @@ -165,14 +165,14 @@ edges | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | -| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | -| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Object [property Street] : String | -| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Object [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | -| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Object [property Street] : String | -| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Object [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | +| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | +| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | +| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | nodes | EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | semmle.label | { ..., ... } : Person [property Name] : String | | EntityFramework.cs:61:24:61:32 | "tainted" : String | semmle.label | "tainted" : String | @@ -237,15 +237,15 @@ nodes | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | semmle.label | access to parameter p : Person [property Name] : String | | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | semmle.label | access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | semmle.label | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | semmle.label | call to method First : Object [property Name] : String | +| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | semmle.label | call to method First : Person [property Name] : String | | EntityFramework.cs:204:18:204:41 | access to property Name | semmle.label | access to property Name | | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | semmle.label | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:212:18:212:38 | call to method First
: Object [property Street] : String | semmle.label | call to method First
: Object [property Street] : String | +| EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | semmle.label | call to method First
: Address [property Street] : String | | EntityFramework.cs:212:18:212:45 | access to property Street | semmle.label | access to property Street | | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | semmle.label | call to method First : Object [property Addresses, element, property Street] : String | +| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | semmle.label | call to method First : Person [property Addresses, element, property Street] : String | | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | semmle.label | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFramework.cs:219:18:219:54 | call to method First
: Object [property Street] : String | semmle.label | call to method First
: Object [property Street] : String | +| EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | semmle.label | call to method First
: Address [property Street] : String | | EntityFramework.cs:219:18:219:61 | access to property Street | semmle.label | access to property Street | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | semmle.label | "tainted" : String | | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | semmle.label | access to local variable taintSource | @@ -318,15 +318,15 @@ nodes | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | semmle.label | access to parameter p : Person [property Name] : String | | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | semmle.label | access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | semmle.label | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | semmle.label | call to method First : Object [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | semmle.label | call to method First : Person [property Name] : String | | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | semmle.label | access to property Name | | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | semmle.label | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Object [property Street] : String | semmle.label | call to method First
: Object [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | semmle.label | call to method First
: Address [property Street] : String | | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | semmle.label | access to property Street | | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | semmle.label | call to method First : Object [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | semmle.label | call to method First : Person [property Addresses, element, property Street] : String | | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | semmle.label | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Object [property Street] : String | semmle.label | call to method First
: Object [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | semmle.label | call to method First
: Address [property Street] : String | | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | semmle.label | access to property Street | subpaths #select diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs index af51015b51c..d70369f6eaa 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs @@ -5,7 +5,7 @@ using System.Linq; namespace EFTests { - class Person + public class Person { public virtual int Id { get; set; } public virtual string Name { get; set; } @@ -17,13 +17,13 @@ namespace EFTests public ICollection
Addresses { get; set; } } - class Address + public class Address { public int Id { get; set; } public string Street { get; set; } } - class PersonAddressMap + public class PersonAddressMap { public int Id { get; set; } public int PersonId { get; set; } @@ -34,7 +34,7 @@ namespace EFTests public Address Address { get; set; } } - class MyContext : DbContext + public class MyContext : DbContext { public virtual DbSet Persons { get; set; } public virtual DbSet
Addresses { get; set; } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs index b45290dc799..1c7febb3398 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs @@ -6,7 +6,7 @@ using System.Linq; namespace EFCoreTests { - class Person + public class Person { public virtual int Id { get; set; } public virtual string Name { get; set; } @@ -18,13 +18,13 @@ namespace EFCoreTests public ICollection
Addresses { get; set; } } - class Address + public class Address { public int Id { get; set; } public string Street { get; set; } } - class PersonAddressMap + public class PersonAddressMap { public int Id { get; set; } public int PersonId { get; set; } @@ -35,7 +35,7 @@ namespace EFCoreTests public Address Address { get; set; } } - class MyContext : DbContext + public class MyContext : DbContext { public virtual DbSet Persons { get; set; } public virtual DbSet
Addresses { get; set; } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected index 4698be24b8c..820aca482f3 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected @@ -1,120 +1,146 @@ summary -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Id];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.Person.Name];value;manual | +| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.Person.Id];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | neutral sourceNode sinkNode diff --git a/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options b/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options b/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options b/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options b/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options b/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options index a0b23f3ee8b..7faed1b92ed 100644 --- a/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options +++ b/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options @@ -1,2 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Data.Common.dll -semmle-extractor-options: /langversion:8.0 +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options index ea0639b2d0a..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options +++ b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.Runtime.Extensions.dll /r:System.Diagnostics.TraceSource.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options b/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs index 0ecabd07016..5b5780ed977 100644 --- a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs @@ -1,15 +1,4 @@ -namespace System -{ - public interface IComparable - { - int CompareTo(object obj); // GOOD: the very definition of IComparable.CompareTo() - } - - public interface IComparable - { - int CompareTo(T other); // GOOD: the very definition of IComparable.CompareTo() - } -} +using System; class C1 { diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected index 860009bd3e2..419629319a5 100644 --- a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected @@ -1,2 +1,2 @@ -| IncorrectCompareToSignature.cs:16:16:16:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignature.cs:14:10:14:10 | T | T | IncorrectCompareToSignature.cs:14:7:14:11 | C1<> | C1<> | IncorrectCompareToSignature.cs:14:10:14:10 | T | T | +| IncorrectCompareToSignature.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | IncorrectCompareToSignature.cs:3:7:3:11 | C1<> | C1<> | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | | IncorrectCompareToSignatureBad.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options b/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options b/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options index 2d3e53846e4..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options +++ b/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options b/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options index 2d3e53846e4..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options +++ b/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options b/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options index 08e01d88cc1..a02c94f4258 100644 --- a/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options +++ b/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options @@ -1 +1 @@ -semmle-extractor-options: --cil /langversion:8.0 /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll /r:System.ComponentModel.Primitives.dll /r:System.IO.Compression.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: --cil /r:System.Private.Xml.dll /r:System.IO.Compression.dll diff --git a/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options b/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options b/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs index f4a4944f4fb..cf290a84bcb 100644 --- a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs @@ -1,11 +1,6 @@ using System; -class HashSet -{ - public bool Add(T t) - { - return true; - } -} +using System.Text; +using System.Collections.Generic; class C1 { @@ -30,11 +25,6 @@ class C1 } } -class StringBuilder -{ - public StringBuilder Append(string s) { return this; } -} - class C2 { static void Main(string[] args) @@ -59,20 +49,6 @@ class C2 } } -namespace System.IO -{ - public abstract class Stream - { - public abstract int Read(byte[] buffer, int offset, int count); - public virtual int ReadByte() { return 0; } - } - - public class MemoryStream : Stream - { - public override int Read(byte[] buffer, int offset, int count) { return 0; } - } -} - class C3 { static void Main(string[] args) diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected index 371205cbc6b..e463ee956eb 100644 --- a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected @@ -1,8 +1,8 @@ -| UncheckedReturnValue.cs:29:9:29:31 | call to method Add | Result of call to 'Add' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:91:9:91:26 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | -| UncheckedReturnValue.cs:92:9:92:20 | call to method ReadByte | Result of call to 'ReadByte' is ignored, but should always be checked. | -| UncheckedReturnValue.cs:109:9:109:17 | call to method M1 | Result of call to 'M1' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:130:9:130:21 | call to method M2 | Result of call to 'M2' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:142:9:142:20 | call to method M3 | Result of call to 'M3' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:24:9:24:31 | call to method Add | Result of call to 'Add' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:67:9:67:26 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | +| UncheckedReturnValue.cs:68:9:68:20 | call to method ReadByte | Result of call to 'ReadByte' is ignored, but should always be checked. | +| UncheckedReturnValue.cs:85:9:85:17 | call to method M1 | Result of call to 'M1' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:106:9:106:21 | call to method M2 | Result of call to 'M2' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:118:9:118:20 | call to method M3 | Result of call to 'M3' is ignored, but 90% of calls to this method have their result used. | | UncheckedReturnValueBad.cs:29:9:29:20 | call to method DoPrint | Result of call to 'DoPrint' is ignored, but 90% of calls to this method have their result used. | | UncheckedReturnValueBad.cs:36:13:36:40 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/AlertSuppression/options b/csharp/ql/test/query-tests/AlertSuppression/options new file mode 100644 index 00000000000..77b22963f5c --- /dev/null +++ b/csharp/ql/test/query-tests/AlertSuppression/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected b/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected index 92f7365adeb..f4b2fcbf837 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected +++ b/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected @@ -1,2 +1,2 @@ -| ExposeRepresentation.cs:8:21:8:23 | Set | 'Set' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentation.cs:16:9:16:9 | ExposeRepresentation.cs:16:9:16:9 | through the variable a | -| ExposeRepresentationBad.cs:18:22:18:24 | Get | 'Get' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentationBad.cs:24:23:24:29 | ExposeRepresentationBad.cs:24:23:24:29 | after this call to Get | +| ExposeRepresentation.cs:8:21:8:23 | Set | 'Set' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentation.cs:16:9:16:9 | access to local variable a | through the variable a | +| ExposeRepresentationBad.cs:18:22:18:24 | Get | 'Get' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentationBad.cs:24:23:24:29 | call to method Get | after this call to Get | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-011/options b/csharp/ql/test/query-tests/Security Features/CWE-011/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-011/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-016/options b/csharp/ql/test/query-tests/Security Features/CWE-016/options new file mode 100644 index 00000000000..a5ea8b797c5 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-016/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-020/options b/csharp/ql/test/query-tests/Security Features/CWE-020/options index 319fd18ddcc..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-020/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-020/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:${testdir}/../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../resources/assemblies/System.Web.ApplicationServices.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Data.Common.dll /r:System.Security.Cryptography.X509Certificates.dll /r:System.Runtime.InteropServices.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options index 17bfec6a531..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.IO.FileSystem.dll /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options index acca6983965..a5ea8b797c5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.IO.Compression.dll /r:System.IO.Compression.FileSystem.dll /r:System.IO.Compression.ZipFile.dll /r:System.IO.FileSystem.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/options b/csharp/ql/test/query-tests/Security Features/CWE-078/options index de7d3478af5..7faed1b92ed 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll /r:System.Diagnostics.Process.dll /r:System.Runtime.InteropServices.dll ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs index 24c4eb73912..1096634b690 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs @@ -1,5 +1,3 @@ -// semmle-extractor-options: /r:${testdir}/../../../../resources/assemblies/System.Data.dll /r:${testdir}/../../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../../resources/assemblies/System.Web.Mvc.dll /r:System.ComponentModel.Primitives.dll /r:System.Collections.Specialized.dll /r:${testdir}/../../../../resources/assemblies/System.Net.Http.dll - using System; using System.Data.SqlClient; using System.Web; diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected index bafe7257095..beef5ec2968 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected @@ -1,8 +1,8 @@ edges -| StoredXSS.cs:24:60:24:86 | call to method GetString : String | StoredXSS.cs:24:44:24:86 | ... + ... | +| StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | nodes -| StoredXSS.cs:24:44:24:86 | ... + ... | semmle.label | ... + ... | -| StoredXSS.cs:24:60:24:86 | call to method GetString : String | semmle.label | call to method GetString : String | +| StoredXSS.cs:22:44:22:86 | ... + ... | semmle.label | ... + ... | +| StoredXSS.cs:22:60:22:86 | call to method GetString : String | semmle.label | call to method GetString : String | subpaths #select -| StoredXSS.cs:24:44:24:86 | ... + ... | StoredXSS.cs:24:60:24:86 | call to method GetString : String | StoredXSS.cs:24:44:24:86 | ... + ... | This HTML or JavaScript write depends on a $@. | StoredXSS.cs:24:60:24:86 | call to method GetString | stored (potentially user-provided) value | +| StoredXSS.cs:22:44:22:86 | ... + ... | StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | This HTML or JavaScript write depends on a $@. | StoredXSS.cs:22:60:22:86 | call to method GetString | stored (potentially user-provided) value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options new file mode 100644 index 00000000000..34d9e62e93c --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected similarity index 66% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected index d296914aba7..66468b41a68 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected @@ -1,5 +1,5 @@ -| script.aspx:4:1:4:23 | <%= ... %> | XSS.cs:114:16:114:29 | someJavascript | -| script.aspx:8:1:8:12 | <%= ... %> | XSS.cs:121:24:121:28 | Field | +| script.aspx:4:1:4:23 | <%= ... %> | XSS.cs:115:16:115:29 | someJavascript | +| script.aspx:8:1:8:12 | <%= ... %> | XSS.cs:122:24:122:28 | Field | | script.aspx:12:1:12:14 | <%= ... %> | | Request | | script.aspx:16:1:16:34 | <%= ... %> | | QueryString | | script.aspx:20:1:20:41 | <%= ... %> | | QueryString | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.ql b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.ql similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.ql rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs similarity index 92% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs index 650f636f875..1fc8a99e61b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs @@ -1,4 +1,4 @@ - +// semmle-extractor-options: /r:${testdir}/../../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../../resources/assemblies/System.Web.Mvc.dll /r:System.Collections.Specialized.dll /r:${testdir}/../../../../resources/assemblies/System.Net.Http.dll using System; using System.Net; using System.Net.Http; @@ -102,7 +102,8 @@ namespace Test new StringContent(HttpUtility.HtmlEncode(name)); } - public void UrlEncoded(HttpContextBase context) { + public void UrlEncoded(HttpContextBase context) + { // GOOD: URL encoding string name = context.Request.QueryString["name"]; new StringContent(HttpUtility.UrlEncode(name)); @@ -135,21 +136,3 @@ namespace Test } } } - -namespace System.Net -{ - public class HttpListenerResponse - { - public System.IO.Stream OutputStream => null; - } - - class HttpListenerContext - { - public HttpListenerResponse Response => null; - } - - class HttpListener - { - public HttpListenerContext GetContext() => null; - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected similarity index 97% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected index f1f4c631769..4b1440cee4a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected @@ -56,7 +56,7 @@ nodes | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XSS.cs:94:27:94:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:95:31:95:34 | access to local variable name | semmle.label | access to local variable name | -| XSS.cs:134:20:134:33 | access to property RawUrl | semmle.label | access to property RawUrl | +| XSS.cs:135:20:135:33 | access to property RawUrl | semmle.label | access to property RawUrl | | script.aspx:12:1:12:14 | <%= ... %> | semmle.label | <%= ... %> | | script.aspx:16:1:16:34 | <%= ... %> | semmle.label | <%= ... %> | | script.aspx:20:1:20:41 | <%= ... %> | semmle.label | <%= ... %> | @@ -72,7 +72,7 @@ subpaths | XSS.cs:86:28:86:31 | access to local variable name | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:86:28:86:31 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | User-provided value | | XSS.cs:87:31:87:34 | access to local variable name | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:87:31:87:34 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | User-provided value | | XSS.cs:95:31:95:34 | access to local variable name | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:95:31:95:34 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | User-provided value | -| XSS.cs:134:20:134:33 | access to property RawUrl | XSS.cs:134:20:134:33 | access to property RawUrl | XSS.cs:134:20:134:33 | access to property RawUrl | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:134:20:134:33 | access to property RawUrl | User-provided value | +| XSS.cs:135:20:135:33 | access to property RawUrl | XSS.cs:135:20:135:33 | access to property RawUrl | XSS.cs:135:20:135:33 | access to property RawUrl | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:135:20:135:33 | access to property RawUrl | User-provided value | | script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:12:1:12:14 | <%= ... %> | User-provided value | | script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:16:1:16:34 | <%= ... %> | User-provided value | | script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:20:1:20:41 | <%= ... %> | User-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.qlref b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.qlref similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.qlref rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.qlref diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options new file mode 100644 index 00000000000..a95668cbc59 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options @@ -0,0 +1 @@ +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Net.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/script.aspx b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/script.aspx similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/script.aspx rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/script.aspx diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/options b/csharp/ql/test/query-tests/Security Features/CWE-089/options index 036514ceb74..b1124d05dcd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/options @@ -1,6 +1,6 @@ semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/Dapper/2.0.90/Dapper.csproj -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/System.Data.SQLite/1.0.116/System.Data.SQLite.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Dapper/2.0.90/Dapper.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SQLite/1.0.116/System.Data.SQLite.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFramework.cs semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/options b/csharp/ql/test/query-tests/Security Features/CWE-090/options index dfc3914bb98..1a54f1e9c36 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/options @@ -1,2 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs ${testdir}/../../../resources/stubs/System.DirectoryServices.cs /r:System.ComponentModel.Primitives.dll /r:System.Collections.Specialized.dll /r:System.ComponentModel.TypeConverter.dll /r:System.Private.Xml.dll -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.DirectoryServices.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options index 5194fddbe4d..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-094/options b/csharp/ql/test/query-tests/Security Features/CWE-094/options index 97b9301f4dc..cce2f114af6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-094/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-094/options @@ -1 +1,5 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/Microsoft.CSharp.cs /r:System.ComponentModel.Primitives.dll ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.CSharp.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-099/options b/csharp/ql/test/query-tests/Security Features/CWE-099/options index 2878eb40d52..6f56ddfc468 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-099/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-099/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Web.cs /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-112/options b/csharp/ql/test/query-tests/Security Features/CWE-112/options index c72ec0605ab..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-112/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-112/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll /r:System.Runtime.Extensions.dll ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options index 2fe55538006..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-119/options b/csharp/ql/test/query-tests/Security Features/CWE-119/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-119/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-134/options b/csharp/ql/test/query-tests/Security Features/CWE-134/options index 54d2098bf4e..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-134/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-134/options @@ -1 +1,4 @@ -semmle-extractor-options: /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Web.cs ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options index 3d76f691ef2..34d9e62e93c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs ${testdir}/../../../../resources/stubs/System.Data.cs ${testdir}/../../../../resources/stubs/System.Net.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-209/options b/csharp/ql/test/query-tests/Security Features/CWE-209/options index 326ff69528b..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-209/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-209/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-312/options b/csharp/ql/test/query-tests/Security Features/CWE-312/options index 4b3bf418201..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-312/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-312/options @@ -1 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll /r:System.Security.Cryptography.dll {testdir}/../../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options new file mode 100644 index 00000000000..94ad1a6f02b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs deleted file mode 100644 index 26461fc0224..00000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs +++ /dev/null @@ -1,71 +0,0 @@ -// This file contains auto-generated code. - -namespace System -{ - namespace Data - { - // Generated from `System.Data.IDbConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public interface IDbConnection : System.IDisposable - { - string ConnectionString { get; set; } - } - - namespace Common - { - // Generated from `System.Data.Common.DbConnectionStringBuilder` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class DbConnectionStringBuilder : System.Collections.IEnumerable, System.Collections.IDictionary, System.Collections.ICollection - { - System.Collections.IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator() => throw null; - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; - bool System.Collections.ICollection.IsSynchronized { get => throw null; } - bool System.Collections.IDictionary.Contains(object keyword) => throw null; - object System.Collections.ICollection.SyncRoot { get => throw null; } - public object this[object keyword] { get => throw null; set => throw null; } - public bool IsReadOnly { get => throw null; } - public override string ToString() => throw null; - public string ConnectionString { get => throw null; set => throw null; } - public virtual System.Collections.ICollection Keys { get => throw null; } - public virtual System.Collections.ICollection Values { get => throw null; } - public virtual bool IsFixedSize { get => throw null; } - public virtual int Count { get => throw null; } - public virtual void Clear() => throw null; - void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; - void System.Collections.IDictionary.Add(object keyword, object value) => throw null; - void System.Collections.IDictionary.Remove(object keyword) => throw null; - public void Dispose() => throw null; - } - - // Generated from `System.Data.Common.DbConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - abstract public class DbConnection : System.IDisposable, System.Data.IDbConnection - { - public abstract string ConnectionString { get; set; } - public void Dispose() => throw null; - } - - } - namespace SqlClient - { - // Generated from `System.Data.SqlClient.SqlConnectionStringBuilder` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder - { - public SqlConnectionStringBuilder() => throw null; - public SqlConnectionStringBuilder(string connectionString) => throw null; - public bool Encrypt { get => throw null; set => throw null; } - public override System.Collections.ICollection Keys { get => throw null; } - public override System.Collections.ICollection Values { get => throw null; } - public override bool IsFixedSize { get => throw null; } - public override void Clear() => throw null; - } - - // Generated from `System.Data.SqlClient.SqlConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class SqlConnection : System.Data.Common.DbConnection, System.ICloneable - { - object System.ICloneable.Clone() => throw null; - public SqlConnection() => throw null; - public SqlConnection(string connectionString) => throw null; - public override string ConnectionString { get => throw null; set => throw null; } - } - - } - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected index 4cc2e788074..011ec3faee0 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected @@ -1,10 +1,10 @@ edges -| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | +| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | -| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | +| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | | InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | @@ -16,12 +16,12 @@ nodes | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | semmle.label | call to method InsecureRandomString | | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | semmle.label | call to method InsecureRandomStringFromSelection | | InsecureRandomness.cs:14:20:14:54 | call to method InsecureRandomStringFromIndexer | semmle.label | call to method InsecureRandomStringFromIndexer | -| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | semmle.label | [post] access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | semmle.label | (...) ... : Int32 | +| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | semmle.label | [post] access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | semmle.label | (...) ... : Byte | | InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | semmle.label | call to method Next : Int32 | | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | semmle.label | [post] access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | semmle.label | call to method GetString : String | -| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | semmle.label | access to local variable data : Byte[] [element] : Int32 | +| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | semmle.label | access to local variable data : Byte[] [element] : Byte | | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | semmle.label | access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | semmle.label | call to method ToString : String | | InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | semmle.label | call to method Next : Int32 | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/options b/csharp/ql/test/query-tests/Security Features/CWE-338/options index 1225f3c0220..bd9f6e49ece 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/options @@ -1,2 +1,3 @@ -semmle-extractor-options: /r:System.Security.Cryptography.Csp.dll /r:System.Security.Cryptography.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global/options b/csharp/ql/test/query-tests/Security Features/CWE-352/global/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/global/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/global/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options b/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-359/options b/csharp/ql/test/query-tests/Security Features/CWE-359/options index aa088071c5d..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-359/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-359/options @@ -1 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll /r:System.Security.Cryptography.dll ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-384/options b/csharp/ql/test/query-tests/Security Features/CWE-384/options index 326ff69528b..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-384/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-384/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options b/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options index bd4d77c7377..a5ea8b797c5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.Runtime.Serialization.Formatters.dll /r:System.IO.FileSystem.dll /r:System.Linq.Expressions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options index 182f92f8d84..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.DataContractSerialization.dll /r:System.Runtime.Serialization.Formatters.dll /r:System.Runtime.Extensions.dll /r:System.IO.FileSystem.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options index 182f92f8d84..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.DataContractSerialization.dll /r:System.Runtime.Serialization.Formatters.dll /r:System.Runtime.Extensions.dll /r:System.IO.FileSystem.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options index bd183f95f5c..81ebad48b0d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options @@ -1 +1,3 @@ -semmle-extractor-options: /nostdlib /noconfig --load-sources-from-project:${testdir}/../../../../resources/stubs/Newtonsoft.Json/13.0.1/Newtonsoft.Json.csproj ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/Newtonsoft.Json/13.0.1/Newtonsoft.Json.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options b/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-548/options b/csharp/ql/test/query-tests/Security Features/CWE-548/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-548/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options index fb116749418..daca5d73f55 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options @@ -1,4 +1,4 @@ semmle-extractor-options: /nostdlib /noconfig semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/options b/csharp/ql/test/query-tests/Security Features/CWE-643/options index 9ab01d95193..6f56ddfc468 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Private.Xml.dll /r:System.Xml.XPath.dll /r:System.Data.Common.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options index 84463712411..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options index 1a4a26ba9ed..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options index 84463712411..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-798/options b/csharp/ql/test/query-tests/Security Features/CWE-798/options index 3145ab2441c..a361e4fde29 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-798/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-798/options @@ -1,2 +1,4 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs -semmle-extractor-options: /r:${testdir}/../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../resources/assemblies/System.Web.ApplicationServices.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Data.Common.dll /r:System.Security.Cryptography.dll /r:System.Runtime.InteropServices.dll diff --git a/csharp/ql/test/query-tests/Security Features/CWE-807/options b/csharp/ql/test/query-tests/Security Features/CWE-807/options index e2ddeb7dac8..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-807/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-807/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Net.cs ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/resources/assemblies/System.Data.dll b/csharp/ql/test/resources/assemblies/System.Data.dll deleted file mode 100644 index 070caaa81f3..00000000000 Binary files a/csharp/ql/test/resources/assemblies/System.Data.dll and /dev/null differ diff --git a/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll b/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll deleted file mode 100644 index 85db5a3a7e4..00000000000 Binary files a/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll and /dev/null differ diff --git a/csharp/ql/test/resources/stubs/System.Web.cs b/csharp/ql/test/resources/stubs/System.Web.cs index 725b672fbe8..58865f82e6a 100644 --- a/csharp/ql/test/resources/stubs/System.Web.cs +++ b/csharp/ql/test/resources/stubs/System.Web.cs @@ -156,6 +156,7 @@ namespace System.Web public class HttpResponse { public void Write(object o) { } + public void Write(string s) { } public void WriteFile(string s) { } public HttpCookieCollection Cookies => null; public void AddHeader(string name, string value) { } diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index 79b2ea2ca1c..f04169caff5 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -21,6 +21,7 @@ function RegisterExtractorPack(id) -- if that's `build`, we append `-p:UseSharedCompilation=false` to the command line, -- otherwise we do nothing. local match = false + local testMatch = false local dotnetRunNeedsSeparator = false; local dotnetRunInjectionIndex = nil; local argv = compilerArguments.argv @@ -37,7 +38,7 @@ function RegisterExtractorPack(id) if (not match) then Log(1, 'Dotnet subcommand detected: %s', arg) end - if arg == 'build' or arg == 'msbuild' or arg == 'publish' or arg == 'pack' or arg == 'test' then + if arg == 'build' or arg == 'msbuild' or arg == 'publish' or arg == 'pack' then match = true break end @@ -48,6 +49,16 @@ function RegisterExtractorPack(id) dotnetRunNeedsSeparator = true dotnetRunInjectionIndex = i + 1 end + if arg == 'test' then + match = true + testMatch = true + end + -- for `dotnet test`, we should not append `-p:UseSharedCompilation=false` to the command line + -- if an `exe` or `dll` is passed as an argument as the call is forwarded to vstest. + if testMatch and (arg:match('%.exe$') or arg:match('%.dll')) then + match = false + break + end end -- if we see a separator to `dotnet run`, inject just prior to the existing separator if arg == '--' then diff --git a/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst b/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst index 83dc32edf76..02c9d448ffa 100644 --- a/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst +++ b/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst @@ -153,6 +153,36 @@ For example, if you want to continue analyzing a set of repositories that had re You can then insert the ``new-repo-list`` of repositories into your list of custom repository lists for easy access in the Variant Analysis Repositories panel. +Using GitHub code search to add repositories to a custom list +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can use code search directly in the CodeQL extension to add a subset of repositories from GitHub.com to a custom list. + +.. pull-quote:: + + Note + + This feature uses the legacy code search via the code search API. For more information on the syntax to use, see "`Searching code (legacy) `__." + +For example, to add all repositories in the ``rails`` organization on GitHub, you can search ``org:rails``. + +You can add a maximum of 1000 repositories to a custom list per search. + +#. In the Variant Analysis Repositories panel, choose the list that you want to add repositories to. You can create a new list or choose an existing list that already contains repositories. + +#. Right-click on the list you have chosen and then click **Add repositories with GitHub Code Search**. + +#. In the pop-up that appears at the top of the application, under the search bar, select a language for your search from the choices in the dropdown. + + .. image:: ../images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png + :alt: Screenshot of the search bar for using code search to add repositories to a custom list. The search bar asks you to choose a language for your search and has a dropdown list of languages to choose from. + +#. In the search bar, type the search query that you want to use and press **Enter**. + +You can view the progress of your search in the bottom right corner of the application in a box with the text "Searching for repositories...". If you click **Cancel**, no repositories will be added to your list. Once complete, you will see the resulting repositories appear in the dropdown under your custom list in the Variant Analysis Repositories panel. + +Some of the resulting repositories will not have CodeQL databases and some may not allow access by the CodeQL extension for Visual Studio Code. When you run an analysis on the list, the Variant Analysis Results view will show you which repositories were analyzed, which denied access, and which had no CodeQL database. + Troubleshooting variant analysis -------------------------------- diff --git a/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png b/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png new file mode 100644 index 00000000000..5f2eddec6f6 Binary files /dev/null and b/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png differ diff --git a/docs/codeql/ql-language-reference/formulas.rst b/docs/codeql/ql-language-reference/formulas.rst index cdc8c297b7d..8745217decc 100644 --- a/docs/codeql/ql-language-reference/formulas.rst +++ b/docs/codeql/ql-language-reference/formulas.rst @@ -164,6 +164,38 @@ If the call resolves to a predicate without result, then the call is a formula. It is also possible to call a predicate with result. This kind of call is an expression in QL, instead of a formula. For more information, see ":ref:`calls-with-result`." +Member predicates only apply to members of a particular class and calls to +member predicates have a receiver of a matching type. Syntactically, if a call +contains a dot, then the expression before the dot specifies the receiver of +the call. For instance, ``x`` is the receiver for the call ``x.isEven()``. + +For calls to member predicates of the enclosing class on the member itself +(i.e., the value of ``this``), the receiver may be omitted syntactically. In +this case we say the call has an implicit this receiver. For instance, in the +following example the ``isEven()`` call in ``isOdd()`` is a member predicate +call with an implicit this receiver and the call is equivalent to +``this.isEven()``: + +.. code-block:: ql + + class OneTwoThree extends int { + OneTwoThree() { this = 1 or this = 2 or this = 3 } + + predicate isEven() { this = 2 } + + predicate isOdd() { not isEven() } + } + +Use of implicit this receivers can make it harder to spot predicates that introduce +cartesian products by failing to relate the implicit ``this`` variable with +other variables, which can negatively affect query performance. For more +information on cartesian products, see ":ref:`Troubleshooting query performance +`". + +It is possible to enable warnings about implicit this receivers for `CodeQL packs +`__ +through the ``warnOnImplicitThis`` property. + .. _parenthesized-formulas: Parenthesized formulas diff --git a/docs/codeql/ql-language-reference/modules.rst b/docs/codeql/ql-language-reference/modules.rst index ee0d1f7966b..42344c72e3d 100644 --- a/docs/codeql/ql-language-reference/modules.rst +++ b/docs/codeql/ql-language-reference/modules.rst @@ -139,7 +139,7 @@ Parameterized modules ===================== Parameterized modules are QL's approach to generic programming. -Similar to explicit modules, parameterized modules are defined within other modules using the keywork ``module``. +Similar to explicit modules, parameterized modules are defined within other modules using the keyword ``module``. In addition to the module name, parameterized modules declare one or more parameters between the name and the module body. For example, consider the module ``M``, which takes two predicate parameters and defines a new predicate diff --git a/docs/codeql/ql-language-reference/ql-language-specification.rst b/docs/codeql/ql-language-reference/ql-language-specification.rst index 71dcbdce571..e1e2dad10fa 100644 --- a/docs/codeql/ql-language-reference/ql-language-specification.rst +++ b/docs/codeql/ql-language-reference/ql-language-specification.rst @@ -199,24 +199,37 @@ Kinds of modules A module may be: +- A *declared module*, if it is defined by the ``module`` or ``ql`` grammar rules. +- A *non-declared module*, if it is not a *declared module*. + +A *declared module* may be: + - A *file module*, if it is defined implicitly by a QL file or a QLL file. - A *query module*, if it is defined implicitly by a QL file. - A *library module*, if it is not a query module. +A *non-declared module* may be: + +- A *built-in module*. +- An *instantiated module* (see :ref:`Parameterized modules`). +- An *instantiation-nested module* (see :ref:`Parameterized modules`). + A query module must contain one or more queries. Import directives ~~~~~~~~~~~~~~~~~ -An import directive refers to a module identifier: +An import directive refers to a module expression: :: import ::= annotations "import" importModuleExpr ("as" modulename)? - qualId ::= simpleId | qualId "." simpleId + importModuleExpr ::= importModuleId arguments? - importModuleExpr ::= qualId | importModuleExpr "::" modulename arguments? + importModuleId ::= qualId | importModuleExpr "::" modulename + + qualId ::= simpleId | qualId "." simpleId arguments ::= "<" argument ("," argument)* ">" @@ -249,6 +262,73 @@ For qualified identifiers (``a.b``): A qualified module identifier is only valid within an import. +Module expressions contain a module identifier and optional arguments. If arguments are present, the module expression instantiates the module that the identifier resolves to (see :ref:`Parameterized modules`). + +Module expressions cannot refer to :ref:`Parameterized modules`. Instead, parameterized modules must always be fully instantiated when they are referenced. + +.. _Parameterized modules: + +Parameterized modules +~~~~~~~~~~~~~~~~~~~~~ + +Modules with parameters are called *parameterized modules*. A *declared module* has parameters if and only if it is a *library module* and its declaration uses the ``parameters`` syntax. + +*Parameterized modules* can be instantiated with arguments that match the signatures of the parameters: + +- Given a type signature, the corresponding argument must be a type that transitively extends the specified ``extends`` types and is a transitive subtype of the specified ``instanceof`` types. +- Given a predicate signature, the corresponding argument must be a predicate with exactly matching relational types. +- Given a module signature, the corresponding argument must be a module that exports all the specified type and predicate members. Furthermore, the module must be declared as matching the module signature via the ``implements`` syntax. + +The result of instantiating a *parameterized module* is an *instantiated module*. The parameterized module is called the *underlying module* of the *instantiated module*. + +Instantiation-relative and instantiation-nested entities +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Given an *instantiated module*, every entity has a corresponding entity called the *instantiation-relative* entity, which is determined as follows: + +- If the entity is the *underlying module*, its *instantiation-relative* entity is the *instantiated module*. +- If the entity is a parameter of the *underlying module*, its *instantiation-relative* entity is the corresponding argument. +- If the entity is declared inside the *underlying module* or its nested modules, its *instantiation-relative* entity is an *instantiation-nested* entity that is generated by the module instantiation. Parameters of any modules that are nested inside the *underlying module* are considered declared inside the module for this purpose. +- Otherwise, the entity's *instantiation-relative* entity is the initial entity itself. + +When the *instantiation-relative* entity of an entity is an *instantiation-nested* entity, then the initial entity is called the *underlying nested* entity of the *instantiation-nested* entity*, the *instantiated module* is called the *instantiation root* of the *instantiation-nested* entity, and the *underlying module* is called the *underlying root* of the *instantiation-nested* entity. + +The components of an *instantiation-nested* entity are the *instantiation-relative* entities of the components of its *underlying nested* entity. Among other things, this applies to: + +- values in the exported environments of *instantiation-nested* modules, +- relational types of *instantiation-nested* predicates and predicate signatures, +- required signatures of *instantiation-nested* parameters, +- parameters of an *instantiation-nested* *parameterized module*, +- fields and member predicates of *instantiation-nested* dataclasses. + +Given an *instantiated module*, any alias in the program has a corresponding alias called the *instantiation-relative* alias, which targets the *instantiation-relative* entity. + +Applicative instantiation +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Every entity has an *underlying completely uninstantiated* entity that is determined as follows: + +- If the entity is an *instantiated module*, its *underlying completely uninstantiated* entity is the *underlying completely uninstantiated* entity of the *underlying module*. +- If the entity is an *instantiation-nested* entity, its *underlying completely uninstantiated* entity is the *underlying completely uninstantiated* entity of the *underlying nested* entity. +- Otherwise, its *underlying completely uninstantiated* entity is the entity itself. + +An entity is called *completely uninstantiated* entity if it is its own *underlying completely uninstantiated* entity. + +Every *completely uninstantiated* entity has a *relevant set of parameters*, which is the set of all parameters of all the modules that the entity is transitively nested inside. For entities that are not nested inside any modules, the *relevant set of parameters* is empty. + +Note that the *relevant set of parameters* by construction contains only *completely uninstantiated* parameters. + +For a *completely uninstantiated* parameter, the *bottom-up instantiation-resolution* relative to an entity is defined as: + +- If the entity is an *instantiated module* or an *instantiation-nested* entity, the *bottom-up instantiation-resolution* is the *instantiation-relative* entity of the *bottom-up instantiation-resolution* relative to the *underlying module*. +- Otherwise, the *bottom-up instantiation-resolution* is the parameter itself. + +An entity is called *fully instantiated* if none of the *bottom-up instantiation-resolutions* of the parameters in the *relevant set of parameters* of the entity's *underlying completely uninstantiated* entity are parameters. + +Two *instantiated modules* or two *instantiation-nested* entities are considered *equivalent* if they have the same *underlying completely uninstantiated* entity and each parameter in its *relevant set of parameters* has the same *bottom-up instantiation-resolution* relative to either *instantiated module*. + +Module instantiation is applicative, meaning that *equivalent* *instantiated modules* and *equivalent* *instantiation-nested* entities are indistinguishable. + Module references and active modules ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -268,7 +348,7 @@ QL is a typed language. This section specifies the kinds of types available, the Kinds of types ~~~~~~~~~~~~~~ -Types in QL are either *primitive* types, *database* types, *class* types, *character* types or *class domain* types. +Types in QL are either *primitive* types, *database* types, *class* types, *character* types, *class domain* types, type *parameters*, or *instantiation-nested* types. The primitive types are ``boolean``, ``date``, ``float``, ``int``, and ``string``. @@ -289,7 +369,9 @@ With the exception of class domain types and character types (which cannot be re type ::= (moduleExpr "::")? classname | dbasetype | "boolean" | "date" | "float" | "int" | "string" - moduleExpr ::= modulename arguments? | moduleExpr "::" modulename arguments? + moduleExpr ::= moduleId arguments? + + moduleId ::= modulename | moduleExpr "::" modulename A type reference is resolved to a type as follows: @@ -1236,15 +1318,15 @@ The type environment for the arguments is the same as for the call. A valid call with results *resolves* to a set of predicates. The ways a call can resolve are as follows: -- If the call has no receiver and the predicate name is a simple identifier, then the predicate is resolved by looking up its name and arity in the visible member-predicate environment of the enclosing class. +- If the call has no receiver and the predicate reference is a simple identifier, then the call is resolved by looking up the predicate reference and arity in the visible predicate environment of the enclosing class. -- If the call has no receiver and the predicate name is a simple identifier, then the predicate is resolved by looking up its name and arity in the visible predicate environment of the enclosing module. +- If the call has no receiver and the predicate reference is a simple identifier, then the call is resolved by looking up the predicate reference and arity in the visible predicate environment of the enclosing module. -- If the call has no receiver and the predicate name is a selection identifier, then the qualifier is resolved as a module (see "`Module resolution <#module-resolution>`__"). The identifier is then resolved in the exported predicate environment of the qualifier module. +- If the call has no receiver and the predicate reference is a selection identifier, then the qualifier is resolved as a module (see "`Module resolution <#module-resolution>`__") and the call is resolved by looking up the identifier in the exported predicate environment of the qualifier module. -- If the type of the receiver is the same as the enclosing class, the predicate is resolved by looking up its name and arity in the visible predicate environment of the class. +- If the the call has a receiver and the type of the receiver is the same as the enclosing class, the call is resolved by looking up the predicate name and arity in the visible predicate environment of the enclosing class. -- If the type of the receiver is not the same as the enclosing class, the predicate is resolved by looking up its name and arity in the exported predicate environment of the class or domain type. +- If the the call has a receiver and the type of the receiver is not the same as the enclosing class, the call is resolved by looking up the predicate name and arity in the exported predicate environment of the type of the receiver. If all the predicates that the call resolves to are declared on a primitive type, we then restrict to the set of predicates where each argument of the call is a subtype of the corresponding predicate argument type. Then we find all predicates ``p`` from this new set such that there is not another predicate ``p'`` where each argument of ``p'`` is a subtype of the corresponding argument in ``p``. We then say the call resolves to this set instead. @@ -1960,10 +2042,12 @@ Stratification A QL program can be *stratified* to a sequence of *layers*. A layer is a set of predicates and types. -A valid stratification must include each predicate and type in the QL program. It must not include any other predicates or types. +A valid stratification must include each predicate and type in the QL program that is *fully instantiated*. It must not include any other predicates or types. A valid stratification must not include the same predicate in multiple layers. +Each non-abstract predicate has an associated body. For predicates inside *declared modules*, this is the predicate declaration. The body of an *instantiation-nested* predicate is the body of the *underlying nested* predicate where all references and calls have been substituted with the *instantiation-relative* entity or alias. + Formulas, variable declarations and expressions within a predicate body have a *negation polarity* that is positive, negative, or zero. Positive and negative are opposites of each other, while zero is the opposite of itself. The negation polarity of a formula or expression is then determined as follows: - The body of a predicate is positive. diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index da873041fb9..0d38f92a8c8 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -25,7 +25,7 @@ Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11",Not applicable,``.py`` Ruby [9]_,"up to 3.2",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Swift [10]_,"Swift 5.4-5.7","Swift compiler","``.swift``" - TypeScript [11]_,"2.6-5.0",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + TypeScript [11]_,"2.6-5.1",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index ed4a238743b..fc56d4b8715 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -910,6 +910,17 @@ func getVersionWhenGoModVersionSupported(v versionInfo) (msg, version string) { // Check the versions of Go found in the environment and in the `go.mod` file, and return a // version to install. If the version is the empty string then no installation is required. +// We never return a version of Go that is outside of the supported range. +// +// +-----------------------+-----------------------+-----------------------+-----------------------------------------------------+------------------------------------------------+ +// | Found in go.mod > | *None* | *Below min supported* | *In supported range* | *Above max supported | +// | Installed \/ | | | | | +// |-----------------------|-----------------------|-----------------------|-----------------------------------------------------|------------------------------------------------| +// | *None* | Install max supported | Install min supported | Install version from go.mod | Install max supported | +// | *Below min supported* | Install max supported | Install min supported | Install version from go.mod | Install max supported | +// | *In supported range* | No action | No action | Install version from go.mod if newer than installed | Install max supported if newer than installed | +// | *Above max supported* | Install max supported | Install min supported | Install version from go.mod | No action | +// +-----------------------+-----------------------+-----------------------+-----------------------------------------------------+------------------------------------------------+ func getVersionToInstall(v versionInfo) (msg, version string) { if !v.goModVersionFound { return getVersionWhenGoModVersionNotFound(v) diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 5f09272c19b..0e0d00161e1 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.3 + +No user-facing changes. + ## 0.5.2 ### Minor Analysis Improvements diff --git a/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md b/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md new file mode 100644 index 00000000000..88ec05c17ce --- /dev/null +++ b/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `LogInjection::Configuration` taint flow configuration class has been deprecated. Use the `LogInjection::Flow` module instead. \ No newline at end of file diff --git a/go/ql/lib/change-notes/released/0.5.3.md b/go/ql/lib/change-notes/released/0.5.3.md new file mode 100644 index 00000000000..e97503053f0 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.5.3.md @@ -0,0 +1,3 @@ +## 0.5.3 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 2d9d3f587f8..2164e038a5d 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.5.2 +lastReleaseVersion: 0.5.3 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 287c27187e3..bf8cd0f648e 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/go-all -version: 0.5.3-dev +version: 0.5.4-dev groups: go dbscheme: go.dbscheme extractor: go library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} dataExtensions: diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index 0c6ee1c3134..73873850982 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -54,6 +54,18 @@ * return value. The return values are zero-indexed * - "ReturnValue[n1..n2]": Similar to "ReturnValue[n]" but selects any * return value in the given range. The range is inclusive at both ends. + * + * For summaries, `input` and `output` may be suffixed by any number of the + * following, separated by ".": + * - "Field[pkg.className.fieldname]": Selects the contents of the field `f` + * which satisfies `f.hasQualifiedName(pkg, className, fieldname)`. + * - "SyntheticField[f]": Selects the contents of the synthetic field `f`. + * - "ArrayElement": Selects an element in an array or slice. + * - "Element": Selects an element in a collection. + * - "MapKey": Selects a key in a map. + * - "MapValue": Selects a value in a map. + * - "Dereference": Selects the value referenced by a pointer. + * * 8. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries @@ -68,6 +80,7 @@ private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific private import internal.AccessPathSyntax private import FlowSummary +private import codeql.mad.ModelValidation as SharedModelVal /** * A module importing the frameworks that provide external flow data, @@ -188,13 +201,16 @@ module ModelValidation { ) } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } + + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } + + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } } + private module KindVal = SharedModelVal::KindValidation; + private string getInvalidModelSignature() { exists( string pred, string package, string type, string name, string signature, string ext, @@ -231,7 +247,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } @@ -342,6 +358,8 @@ predicate parseContent(string component, DataFlow::Content content) { component = "MapKey" and content instanceof DataFlow::MapKeyContent or component = "MapValue" and content instanceof DataFlow::MapValueContent + or + component = "Dereference" and content instanceof DataFlow::PointerContent } cached diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index e78404ca626..84ed6d5f61c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -11,12 +11,7 @@ private newtype TNode = MkSsaNode(SsaDefinition ssa) or MkGlobalFunctionNode(Function f) or MkImplicitVarargsSlice(CallExpr c) { c.hasImplicitVarargs() } or - MkSummarizedParameterNode(SummarizedCallable c, int i) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, i) - } or - MkSummaryInternalNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } + MkFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) /** Nodes intended for only use inside the data-flow libraries. */ module Private { @@ -30,9 +25,7 @@ module Private { not exists(n.getEnclosingCallable()) and result.asFileScope() = n.getFile() or - n = MkSummarizedParameterNode(result.asSummarizedCallable(), _) - or - n = MkSummaryInternalNode(result.asSummarizedCallable(), _) + result.asSummarizedCallable() = n.(FlowSummaryNode).getSummarizedCallable() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ @@ -52,7 +45,7 @@ module Private { ReturnNode() { this.(Public::ResultNode).getIndex() = kind.getIndex() or - this.(SummaryNode).isReturn(kind) + this.(FlowSummaryNode).isReturn(kind) } /** Gets the kind of this returned value. */ @@ -72,33 +65,33 @@ module Private { /** * A data-flow node used to model flow summaries. */ - class SummaryNode extends Node, MkSummaryInternalNode { - private SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; + class FlowSummaryNode extends Node, MkFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = MkFlowSummaryNode(result) } - SummaryNode() { this = MkSummaryInternalNode(c, state) } - - override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { - c.hasLocationInfo(fp, sl, sc, el, ec) + SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() } - override string toString() { result = "[summary] " + state + " in " + c } + override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + this.getSummarizedCallable().hasLocationInfo(fp, sl, sc, el, ec) + } + + override string toString() { result = this.getSummaryNode().toString() } /** Holds if this summary node is the `i`th argument of `call`. */ predicate isArgumentOf(DataFlowCall call, int i) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, i) + FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), i) } /** Holds if this summary node is a return node. */ - predicate isReturn(ReturnKind kind) { FlowSummaryImpl::Private::summaryReturnNode(this, kind) } + predicate isReturn(ReturnKind kind) { + FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), kind) + } /** Holds if this summary node is an out node for `call`. */ - predicate isOut(DataFlowCall call) { FlowSummaryImpl::Private::summaryOutNode(call, this, _) } - } - - /** Gets the summary node corresponding to the callable `c` and state `state`. */ - SummaryNode getSummaryNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - result = MkSummaryInternalNode(c, state) + predicate isOut(DataFlowCall call) { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), _) + } } } @@ -661,11 +654,14 @@ module Public { * A summary node which represents a parameter in a function which doesn't * already have a parameter nodes. */ - class SummarizedParameterNode extends ParameterNode, MkSummarizedParameterNode { - SummarizedCallable c; - int i; + class SummarizedParameterNode extends ParameterNode, FlowSummaryNode { + SummarizedParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _) + } - SummarizedParameterNode() { this = MkSummarizedParameterNode(c, i) } + private int getPos() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) + } // There are no AST representations of summarized parameter nodes override ControlFlow::Root getRoot() { none() } @@ -673,19 +669,14 @@ module Public { override string getNodeKind() { result = "external parameter node" } override Type getType() { - result = c.getType().getParameterType(i) + result = this.getSummarizedCallable().getType().getParameterType(this.getPos()) or - i = -1 and result = c.asFunction().(Method).getReceiverType() + this.getPos() = -1 and + result = this.getSummarizedCallable().asFunction().(Method).getReceiverType() } override predicate isParameterOf(DataFlowCallable call, int idx) { - c = call.asSummarizedCallable() and i = idx - } - - override string toString() { result = "parameter " + i + " of " + c.toString() } - - override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { - c.hasLocationInfo(fp, sl, sc, el, ec) + this.getSummarizedCallable() = call.asSummarizedCallable() and this.getPos() = idx } } @@ -1237,10 +1228,12 @@ module Public { private import Private private import Public -class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { - private Node pre; +class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryNode pre; - SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + SummaryPostUpdateNode() { + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), pre.getSummaryNode()) + } override Node getPreUpdateNode() { result = pre } } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index d45587aa3d4..277c92703e7 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -129,7 +129,8 @@ predicate jumpStep(Node n1, Node n2) { n2 = recvRead ) or - FlowSummaryImpl::Private::Steps::summaryJumpStep(n1, n2) + FlowSummaryImpl::Private::Steps::summaryJumpStep(n1.(FlowSummaryNode).getSummaryNode(), + n2.(FlowSummaryNode).getSummaryNode()) } /** @@ -153,7 +154,8 @@ predicate storeStep(Node node1, Content c, Node node2) { node1 = node2.(AddressOperationNode).getOperand() and c = any(DataFlow::PointerContent pc | pc.getPointerType() = node2.getType()) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) or containerStoreStep(node1, node2, c) } @@ -173,7 +175,8 @@ predicate readStep(Node node1, Content c, Node node2) { c = any(DataFlow::FieldContent fc | fc.getField() = read.getField()) ) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) or containerReadStep(node1, node2, c) } @@ -197,9 +200,11 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ DataFlowType getNodeType(Node n) { result = TTodoDataFlowType() and exists(n) } @@ -223,6 +228,12 @@ class CastNode extends ExprNode { override ConversionExpr expr; } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + class DataFlowExpr = Expr; private newtype TDataFlowType = @@ -378,7 +389,7 @@ Node getArgument(CallNode c, int i) { } /** Holds if `n` should be hidden from path explanations. */ -predicate nodeIsHidden(Node n) { n instanceof SummaryNode or n instanceof SummarizedParameterNode } +predicate nodeIsHidden(Node n) { n instanceof FlowSummaryNode } class LambdaCallKind = Unit; diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll index 40ec012cc27..ba0728ff02e 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -124,7 +124,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { // step through function model any(FunctionModel m).flowStep(nodeFrom, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), true) } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index e6379f6a170..9ea7c44c50c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -180,6 +180,11 @@ module Public { result = "Argument[" + getParameterPosition(pos) + "]" ) or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } @@ -505,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -530,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -559,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -574,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -582,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -605,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -618,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -626,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -634,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -647,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -662,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -675,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -691,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -703,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -713,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -722,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -736,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -748,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -763,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -789,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -801,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -813,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -840,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -852,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -862,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -884,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -909,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -936,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -951,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -962,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -976,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1344,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1357,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1377,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll index 7afdb314929..609790659f8 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll @@ -17,7 +17,7 @@ private module FlowSummaries { class SummarizedCallableBase = Callable; -DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c } +DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c or none() } /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { result = -1 } @@ -28,10 +28,8 @@ string getParameterPosition(ParameterPosition pos) { result = pos.toString() } /** Gets the textual representation of an argument position in the format used for flow summaries. */ string getArgumentPosition(ArgumentPosition pos) { result = pos.toString() } -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = getSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -DataFlowCall summaryDataFlowCall(Node receiver) { +DataFlowCall summaryDataFlowCall(SummaryNode receiver) { // We do not currently have support for callback-based library models. none() } @@ -39,6 +37,9 @@ DataFlowCall summaryDataFlowCall(Node receiver) { /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { result = c.getType() } +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { any() } + /** Gets the return type of kind `rk` for callable `c`. */ DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { any() } @@ -105,6 +106,8 @@ private string getContentSpecific(Content c) { c instanceof MapKeyContent and result = "MapKey" or c instanceof MapValueContent and result = "MapValue" + or + c instanceof PointerContent and result = "Dereference" } /** Gets the textual representation of the content in the format used for flow summaries. */ diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll index 38e03f62b44..21d3f482f6c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -5,6 +5,7 @@ private import go private import FlowSummaryImpl as FlowSummaryImpl private import codeql.util.Unit +private import DataFlowPrivate as DataFlowPrivate /** * Holds if taint can flow from `src` to `sink` in zero or more @@ -95,7 +96,8 @@ predicate localAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { sliceStep(pred, succ) or any(FunctionModel fm).taintStep(pred, succ) or any(AdditionalTaintStep a).step(pred, succ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(DataFlowPrivate::FlowSummaryNode) + .getSummaryNode(), succ.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false) } /** diff --git a/go/ql/lib/semmle/go/security/LogInjection.qll b/go/ql/lib/semmle/go/security/LogInjection.qll index 12f64c87e4a..70e0947c53b 100644 --- a/go/ql/lib/semmle/go/security/LogInjection.qll +++ b/go/ql/lib/semmle/go/security/LogInjection.qll @@ -17,7 +17,7 @@ module LogInjection { /** * A taint-tracking configuration for reasoning about log injection vulnerabilities. */ - class Configuration extends TaintTracking::Configuration { + deprecated class Configuration extends TaintTracking::Configuration { Configuration() { this = "LogInjection" } override predicate isSource(DataFlow::Node source) { source instanceof Source } @@ -30,4 +30,17 @@ module LogInjection { guard instanceof SanitizerGuard } } + + /** + * A taint-tracking configuration for reasoning about log injection vulnerabilities. + */ + module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof Sanitizer } + } + + module Flow = TaintTracking::Global; } diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 8a1b8bcfebc..61712c5e790 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.3 + +No user-facing changes. + ## 0.5.2 No user-facing changes. diff --git a/go/ql/src/Security/CWE-022/ZipSlip.qhelp b/go/ql/src/Security/CWE-022/ZipSlip.qhelp index 1322dc18c13..ecea2eaeec9 100644 --- a/go/ql/src/Security/CWE-022/ZipSlip.qhelp +++ b/go/ql/src/Security/CWE-022/ZipSlip.qhelp @@ -5,9 +5,9 @@

-Extracting files from a malicious zip archive without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in +Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated. archive paths.

@@ -15,8 +15,8 @@ archive paths. Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine which output file the contents of an archive item should be written to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

diff --git a/go/ql/src/Security/CWE-022/ZipSlip.ql b/go/ql/src/Security/CWE-022/ZipSlip.ql index ceec7dc57e3..5cfb3998f4d 100644 --- a/go/ql/src/Security/CWE-022/ZipSlip.ql +++ b/go/ql/src/Security/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during zip extraction ("zip slip") - * @description Extracting files from a malicious zip archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id go/zipslip * @problem.severity error diff --git a/go/ql/src/Security/CWE-117/LogInjection.ql b/go/ql/src/Security/CWE-117/LogInjection.ql index 39952dbbfa1..5b6586c8e4e 100644 --- a/go/ql/src/Security/CWE-117/LogInjection.ql +++ b/go/ql/src/Security/CWE-117/LogInjection.ql @@ -13,9 +13,9 @@ import go import semmle.go.security.LogInjection -import DataFlow::PathGraph +import LogInjection::Flow::PathGraph -from LogInjection::Configuration c, DataFlow::PathNode source, DataFlow::PathNode sink -where c.hasFlowPath(source, sink) +from LogInjection::Flow::PathNode source, LogInjection::Flow::PathNode sink +where LogInjection::Flow::flowPath(source, sink) select sink.getNode(), source, sink, "This log entry depends on a $@.", source.getNode(), "user-provided value" diff --git a/go/ql/src/change-notes/2023-06-16-zipslip-rename.md b/go/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..72913f37c06 --- /dev/null +++ b/go/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during zip extraction ("zip slip")" (`go/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/go/ql/src/change-notes/released/0.5.3.md b/go/ql/src/change-notes/released/0.5.3.md new file mode 100644 index 00000000000..e97503053f0 --- /dev/null +++ b/go/ql/src/change-notes/released/0.5.3.md @@ -0,0 +1,3 @@ +## 0.5.3 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 2d9d3f587f8..2164e038a5d 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.5.2 +lastReleaseVersion: 0.5.3 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 75963a0708e..ad8b0d5db16 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.5.3-dev +version: 0.5.4-dev groups: - go - queries diff --git a/go/ql/test/TestUtilities/InlineFlowTest.qll b/go/ql/test/TestUtilities/InlineFlowTest.qll index 0726265699f..4f3cfc7599a 100644 --- a/go/ql/test/TestUtilities/InlineFlowTest.qll +++ b/go/ql/test/TestUtilities/InlineFlowTest.qll @@ -3,37 +3,35 @@ * * Example for a test.ql: * ```ql - * import java + * import go * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph + * + * from PathNode source, PathNode sink + * where flowPath(source, sink) + * select sink, source, sink, "$@", source, source.toString() * ``` * * To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. - * Example of the corresponding test file, e.g. Test.java + * Example of the corresponding test file, e.g. Test.go * ```go - * public class Test { - * - * Object source() { return null; } - * String taint() { return null; } - * void sink(Object o) { } - * - * public void test() { - * Object s = source(); - * sink(s); //$hasValueFlow - * String t = "foo" + taint(); - * sink(t); //$hasTaintFlow - * } + * func source() string { return ""; } + * func taint() string { return ""; } + * func sink(s string) { } * + * func test() { + * s := source() + * sink(s) // $ hasValueFlow="s" + * t := "foo" + taint() + * sink(t) // $ hasTaintFlow="t" * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -47,57 +45,68 @@ private predicate defaultSource(DataFlow::Node source) { ) } -class DefaultValueFlowConf extends DataFlow::Configuration { - DefaultValueFlowConf() { this = "qltest:defaultValueFlowConf" } - - override predicate isSource(DataFlow::Node source) { defaultSource(source) } - - override predicate isSink(DataFlow::Node sink) { - exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) - } - - override int fieldFlowBranchLimit() { result = 1000 } +private predicate defaultSink(DataFlow::Node sink) { + exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) } -class DefaultTaintFlowConf extends TaintTracking::Configuration { - DefaultTaintFlowConf() { this = "qltest:defaultTaintFlowConf" } +module DefaultFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { defaultSource(source) } - override predicate isSource(DataFlow::Node source) { defaultSource(source) } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } - override predicate isSink(DataFlow::Node sink) { - exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) - } - - override int fieldFlowBranchLimit() { result = 1000 } + int fieldFlowBranchLimit() { result = 1000 } } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + predicate isSink(DataFlow::Node sink) { none() } +} - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node sink | this.getValueFlowConfig().hasFlowTo(sink) | - sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = sink.toString() and - value = "\"" + sink.toString() + "\"" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - this.getTaintFlowConfig().hasFlow(src, sink) and - not this.getValueFlowConfig().hasFlow(src, sink) - | - sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = sink.toString() and - value = "\"" + sink.toString() + "\"" - ) +module FlowTest { + module ValueFlow = DataFlow::Global; + + module TaintFlow = TaintTracking::Global; + + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node sink | ValueFlow::flowTo(sink) | + sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = sink.toString() and + value = "\"" + sink.toString() + "\"" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = sink.toString() and + value = "\"" + sink.toString() + "\"" + ) + } } - DataFlow::Configuration getValueFlowConfig() { result = any(DefaultValueFlowConf config) } + import MakeTest + import DataFlow::MergePathGraph - DataFlow::Configuration getTaintFlowConfig() { result = any(DefaultTaintFlowConf config) } + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) + } +} + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest } diff --git a/go/ql/test/example-tests/snippets/typeinfo.expected b/go/ql/test/example-tests/snippets/typeinfo.expected index c3b63b1b25b..728a1dfc6f7 100644 --- a/go/ql/test/example-tests/snippets/typeinfo.expected +++ b/go/ql/test/example-tests/snippets/typeinfo.expected @@ -1,7 +1,7 @@ -| file://:0:0:0:0 | parameter -1 of AddCookie | -| file://:0:0:0:0 | parameter -1 of Clone | -| file://:0:0:0:0 | parameter -1 of Write | -| file://:0:0:0:0 | parameter -1 of WriteProxy | +| file://:0:0:0:0 | [summary param] -1 in AddCookie | +| file://:0:0:0:0 | [summary param] -1 in Clone | +| file://:0:0:0:0 | [summary param] -1 in Write | +| file://:0:0:0:0 | [summary param] -1 in WriteProxy | | main.go:18:12:18:14 | argument corresponding to req | | main.go:18:12:18:14 | definition of req | | main.go:20:5:20:7 | req | diff --git a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql index 20dc73705a8..6a1420db6d6 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql @@ -2,14 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpHeaderWriteTest extends InlineExpectationsTest { - HttpHeaderWriteTest() { this = "HttpHeaderWriteTest" } +module HttpHeaderWriteTest implements TestSig { + string getARelevantTag() { result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] } - override string getARelevantTag() { - result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] - } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // Dynamic key-value header: exists(Http::HeaderWrite hw | hw.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -56,3 +52,5 @@ class HttpHeaderWriteTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql index 4b7bcb7823c..a0a8ce0a242 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpRedirectTest extends InlineExpectationsTest { - HttpRedirectTest() { this = "HttpRedirectTest" } +module HttpRedirectTest implements TestSig { + string getARelevantTag() { result = "redirectUrl" } - override string getARelevantTag() { result = "redirectUrl" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "redirectUrl" and exists(Http::Redirect rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class HttpRedirectTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql index a2b3dc62167..b34f1ec23be 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = ["contentType", "responseBody"] } - override string getARelevantTag() { result = ["contentType", "responseBody"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(Http::ResponseBody rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -23,3 +21,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql index 5de07cbe043..f5d74acdf56 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql @@ -14,12 +14,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintTrackingTest extends InlineExpectationsTest { - TaintTrackingTest() { this = "TaintTrackingTest" } +module TaintTrackingTest implements TestSig { + string getARelevantTag() { result = "taintSink" } - override string getARelevantTag() { result = "taintSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintSink" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -29,3 +27,5 @@ class TaintTrackingTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql index 4ace887e367..d414451dc21 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "UntrustedFlowSourceTest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedFlowSource" } - override string getARelevantTag() { result = "untrustedFlowSource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedFlowSource" and exists(DataFlow::CallNode sinkCall, DataFlow::ArgumentNode arg | sinkCall.getCalleeName() = "sink" and @@ -21,3 +19,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected +++ b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql index 0130172e7d0..70494910554 100644 --- a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql +++ b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql @@ -2,14 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpHeaderWriteTest extends InlineExpectationsTest { - HttpHeaderWriteTest() { this = "HttpHeaderWriteTest" } +module HttpHeaderWriteTest implements TestSig { + string getARelevantTag() { result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] } - override string getARelevantTag() { - result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] - } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // Dynamic key-value header: exists(Http::HeaderWrite hw | hw.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -56,3 +52,5 @@ class HttpHeaderWriteTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/Redirect.expected b/go/ql/test/experimental/frameworks/Fiber/Redirect.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/Redirect.expected +++ b/go/ql/test/experimental/frameworks/Fiber/Redirect.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/Redirect.ql b/go/ql/test/experimental/frameworks/Fiber/Redirect.ql index 37bb0f97bfb..1f609ea3959 100644 --- a/go/ql/test/experimental/frameworks/Fiber/Redirect.ql +++ b/go/ql/test/experimental/frameworks/Fiber/Redirect.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpRedirectTest extends InlineExpectationsTest { - HttpRedirectTest() { this = "HttpRedirectTest" } +module HttpRedirectTest implements TestSig { + string getARelevantTag() { result = "redirectUrl" } - override string getARelevantTag() { result = "redirectUrl" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "redirectUrl" and exists(Http::Redirect rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class HttpRedirectTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected +++ b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql index 74a9008749d..574f514b343 100644 --- a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql +++ b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = ["contentType", "responseBody"] } - override string getARelevantTag() { result = ["contentType", "responseBody"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(Http::ResponseBody rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -23,3 +21,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected +++ b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql index dba5c65328c..5e2082acd60 100644 --- a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql +++ b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql @@ -14,12 +14,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintTrackingTest extends InlineExpectationsTest { - TaintTrackingTest() { this = "TaintTrackingTest" } +module TaintTrackingTest implements TestSig { + string getARelevantTag() { result = "taintSink" } - override string getARelevantTag() { result = "taintSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintSink" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -29,3 +27,5 @@ class TaintTrackingTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected +++ b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql index 3e7666b581a..4964c900207 100644 --- a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql +++ b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "UntrustedFlowSourceTest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedFlowSource" } - override string getARelevantTag() { result = "untrustedFlowSource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedFlowSource" and exists(DataFlow::CallNode sinkCall, DataFlow::ArgumentNode arg | sinkCall.getCalleeName() = "sink" and @@ -21,3 +19,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected b/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected +++ b/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql b/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql index b501b84eadd..9a75a5f0136 100644 --- a/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql +++ b/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class FunctionIsVariadicTest extends InlineExpectationsTest { - FunctionIsVariadicTest() { this = "Function::IsVariadicTest" } +module FunctionIsVariadicTest implements TestSig { + string getARelevantTag() { result = "isVariadic" } - override string getARelevantTag() { result = "isVariadic" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(CallExpr ce | ce.getTarget().isVariadic() and ce.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class FunctionIsVariadicTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected +++ b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql index 789472ecd2f..048352a3ee0 100644 --- a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql +++ b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class ImplementsComparableTest extends InlineExpectationsTest { - ImplementsComparableTest() { this = "ImplementsComparableTest" } +module ImplementsComparableTest implements TestSig { + string getARelevantTag() { result = "implementsComparable" } - override string getARelevantTag() { result = "implementsComparable" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // file = "interface.go" and tag = "implementsComparable" and exists(TypeSpec ts | @@ -20,3 +18,5 @@ class ImplementsComparableTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql index d2ae79ae7d9..e6b96ce608e 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class SignatureTypeIsVariadicTest extends InlineExpectationsTest { - SignatureTypeIsVariadicTest() { this = "SignatureType::IsVariadicTest" } +module SignatureTypeIsVariadicTest implements TestSig { + string getARelevantTag() { result = "isVariadic" } - override string getARelevantTag() { result = "isVariadic" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(FuncDef fd | fd.isVariadic() and fd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class SignatureTypeIsVariadicTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql index c6972eba275..6b982271404 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql +++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class HttpHandler extends InlineExpectationsTest { - HttpHandler() { this = "httphandler" } +module HttpHandler implements TestSig { + string getARelevantTag() { result = "handler" } - override string getARelevantTag() { result = "handler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "handler" and exists(Http::RequestHandler h, DataFlow::Node check | element = h.toString() and value = check.toString() @@ -17,3 +15,5 @@ class HttpHandler extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql index ce1be9a05d7..ab4890f9746 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql +++ b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class LoggerTest extends InlineExpectationsTest { - LoggerTest() { this = "LoggerTest" } +module LoggerTest implements TestSig { + string getARelevantTag() { result = "logger" } - override string getARelevantTag() { result = "logger" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(LoggerCall log | log.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class LoggerTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql index e6e99b0e6c2..500572f5d45 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql @@ -13,12 +13,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -41,12 +39,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -56,3 +52,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml index 79ca023562c..47e51e573f0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml @@ -22,7 +22,9 @@ extensions: - ["github.com/nonexistent/test", "", False, "GetMapKey", "", "", "Argument[0].MapKey", "ReturnValue", "value", "manual"] - ["github.com/nonexistent/test", "", False, "SetElement", "", "", "Argument[0]", "ReturnValue.Element", "value", "manual"] - ["github.com/nonexistent/test", "C", False, "Get", "", "", "Argument[-1].Field[github.com/nonexistent/test.C.F]", "ReturnValue", "value", "manual"] + - ["github.com/nonexistent/test", "C", False, "GetThroughPointer", "", "", "Argument[-1].Dereference.Field[github.com/nonexistent/test.C.F]", "ReturnValue", "value", "manual"] - ["github.com/nonexistent/test", "C", False, "Set", "", "", "Argument[0]", "Argument[-1].Field[github.com/nonexistent/test.C.F]", "value", "manual"] + - ["github.com/nonexistent/test", "C", False, "SetThroughPointer", "", "", "Argument[0]", "Argument[-1].Dereference.Field[github.com/nonexistent/test.C.F]", "value", "manual"] - addsTo: pack: codeql/go-all diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql index 9719a9d69a6..2b719551ae0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql @@ -8,16 +8,10 @@ import ModelValidation import semmle.go.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl import TestUtilities.InlineFlowTest -class Config extends TaintTracking::Configuration { - Config() { this = "external-flow-test" } +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { sourceNode(src, "qltest") } - override predicate isSource(DataFlow::Node src) { sourceNode(src, "qltest") } - - override predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") } + predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") } } -class ExternalFlowTest extends InlineFlowTest { - override DataFlow::Configuration getValueFlowConfig() { none() } - - override DataFlow::Configuration getTaintFlowConfig() { result = any(Config config) } -} +import TaintFlowTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected index 21199db73df..38dc380b55b 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected @@ -26,6 +26,10 @@ invalidModelRow | test.go:133:10:133:17 | call to Get | qltest | | test.go:137:10:137:17 | call to Get | qltest | | test.go:142:10:142:17 | call to Get | qltest | -| test.go:148:17:148:20 | arg1 | qltest | -| test.go:148:23:148:26 | arg2 | qltest | -| test.go:148:29:148:32 | arg3 | qltest | +| test.go:146:10:146:14 | selection of F | qltest | +| test.go:149:10:149:32 | call to GetThroughPointer | qltest | +| test.go:153:10:153:32 | call to GetThroughPointer | qltest | +| test.go:158:10:158:32 | call to GetThroughPointer | qltest | +| test.go:164:17:164:20 | arg1 | qltest | +| test.go:164:23:164:26 | arg2 | qltest | +| test.go:164:29:164:32 | arg3 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected index 7b721110c67..2f1e3256778 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected @@ -17,3 +17,7 @@ invalidModelRow | test.go:132:15:132:22 | call to Src1 | qltest | | test.go:136:9:136:16 | call to Src1 | qltest | | test.go:140:9:140:16 | call to Src1 | qltest | +| test.go:145:24:145:31 | call to Src1 | qltest | +| test.go:148:17:148:24 | call to Src1 | qltest | +| test.go:152:24:152:31 | call to Src1 | qltest | +| test.go:156:24:156:31 | call to Src1 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go index a70b2868f58..35da086a888 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go @@ -141,6 +141,22 @@ func simpleflow() { c4.Set("") b.Sink1(c4.Get()) // $ SPURIOUS: hasTaintFlow="call to Get" // because we currently don't clear content + cp1 := &test.C{""} + cp1.SetThroughPointer(a.Src1().(string)) + b.Sink1(cp1.F) // $ hasTaintFlow="selection of F" + + cp2 := &test.C{a.Src1().(string)} + b.Sink1(cp2.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer" + + cp3 := &test.C{""} + cp3.SetThroughPointer(a.Src1().(string)) + b.Sink1(cp3.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer" + + cp4 := &test.C{""} + cp4.SetThroughPointer(a.Src1().(string)) + cp4.SetThroughPointer("") + b.Sink1(cp4.GetThroughPointer()) // $ SPURIOUS: hasTaintFlow="call to GetThroughPointer" // because we currently don't clear content + arg1 := src arg2 := src arg3 := src diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go index 2f13fce84e7..746f6ac9a6a 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go @@ -67,3 +67,6 @@ type C struct { func (c C) Set(f string) {} func (c C) Get() string { return "" } + +func (c *C) SetThroughPointer(f string) {} +func (c *C) GetThroughPointer() string { return "" } diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql index 1be00de1f13..e30f7bc28e3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql @@ -15,12 +15,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -43,12 +41,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -58,3 +54,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected index 54091adf7d1..d875c24c49a 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected @@ -1,286 +1,286 @@ -| file://:0:0:0:0 | parameter 0 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 0 of As | file://:0:0:0:0 | [summary] to write: argument 1 in As | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | -| file://:0:0:0:0 | parameter 0 of ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | -| file://:0:0:0:0 | parameter 0 of ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | -| file://:0:0:0:0 | parameter 0 of LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | -| file://:0:0:0:0 | parameter 0 of New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | -| file://:0:0:0:0 | parameter 0 of NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | -| file://:0:0:0:0 | parameter 0 of ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | -| file://:0:0:0:0 | parameter 0 of PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | -| file://:0:0:0:0 | parameter 0 of PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | -| file://:0:0:0:0 | parameter 0 of Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | -| file://:0:0:0:0 | parameter 0 of QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | -| file://:0:0:0:0 | parameter 0 of QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | -| file://:0:0:0:0 | parameter 0 of Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | -| file://:0:0:0:0 | parameter 0 of QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | -| file://:0:0:0:0 | parameter 0 of QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | -| file://:0:0:0:0 | parameter 0 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter 0 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter 0 of Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | -| file://:0:0:0:0 | parameter 0 of Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | -| file://:0:0:0:0 | parameter 0 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 0 of SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | -| file://:0:0:0:0 | parameter 0 of SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | -| file://:0:0:0:0 | parameter 0 of StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | -| file://:0:0:0:0 | parameter 0 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | -| file://:0:0:0:0 | parameter 0 of SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | -| file://:0:0:0:0 | parameter 0 of Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | -| file://:0:0:0:0 | parameter 0 of UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | -| file://:0:0:0:0 | parameter 0 of Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | -| file://:0:0:0:0 | parameter 0 of User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | -| file://:0:0:0:0 | parameter 0 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 0 of ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 1 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | -| file://:0:0:0:0 | parameter 1 of CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 1 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 1 of StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | -| file://:0:0:0:0 | parameter 1 of StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | -| file://:0:0:0:0 | parameter 1 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 1 of SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | -| file://:0:0:0:0 | parameter 1 of SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 2 of CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter -1 of Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | -| file://:0:0:0:0 | parameter -1 of Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | -| file://:0:0:0:0 | parameter -1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter -1 of EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | -| file://:0:0:0:0 | parameter -1 of Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | -| file://:0:0:0:0 | parameter -1 of Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | -| file://:0:0:0:0 | parameter -1 of FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | -| file://:0:0:0:0 | parameter -1 of FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | -| file://:0:0:0:0 | parameter -1 of FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | -| file://:0:0:0:0 | parameter -1 of Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | -| file://:0:0:0:0 | parameter -1 of InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | -| file://:0:0:0:0 | parameter -1 of Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter -1 of Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | -| file://:0:0:0:0 | parameter -1 of MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | -| file://:0:0:0:0 | parameter -1 of MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | -| file://:0:0:0:0 | parameter -1 of MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | -| file://:0:0:0:0 | parameter -1 of MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter -1 of Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | -| file://:0:0:0:0 | parameter -1 of Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | -| file://:0:0:0:0 | parameter -1 of Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | -| file://:0:0:0:0 | parameter -1 of Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | -| file://:0:0:0:0 | parameter -1 of RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | -| file://:0:0:0:0 | parameter -1 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter -1 of Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | -| file://:0:0:0:0 | parameter -1 of Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | -| file://:0:0:0:0 | parameter -1 of UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | -| file://:0:0:0:0 | parameter -1 of Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 0 in As | file://:0:0:0:0 | [summary] to write: argument 1 in As | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | +| file://:0:0:0:0 | [summary param] 0 in ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | +| file://:0:0:0:0 | [summary param] 0 in ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | +| file://:0:0:0:0 | [summary param] 0 in LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | +| file://:0:0:0:0 | [summary param] 0 in New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | +| file://:0:0:0:0 | [summary param] 0 in NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | +| file://:0:0:0:0 | [summary param] 0 in ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | +| file://:0:0:0:0 | [summary param] 0 in PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | +| file://:0:0:0:0 | [summary param] 0 in PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | +| file://:0:0:0:0 | [summary param] 0 in Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | +| file://:0:0:0:0 | [summary param] 0 in QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | +| file://:0:0:0:0 | [summary param] 0 in QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | +| file://:0:0:0:0 | [summary param] 0 in Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | +| file://:0:0:0:0 | [summary param] 0 in QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | +| file://:0:0:0:0 | [summary param] 0 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] 0 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] 0 in Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | +| file://:0:0:0:0 | [summary param] 0 in Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | +| file://:0:0:0:0 | [summary param] 0 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 0 in SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | +| file://:0:0:0:0 | [summary param] 0 in SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | +| file://:0:0:0:0 | [summary param] 0 in StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | +| file://:0:0:0:0 | [summary param] 0 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | +| file://:0:0:0:0 | [summary param] 0 in SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | +| file://:0:0:0:0 | [summary param] 0 in Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | +| file://:0:0:0:0 | [summary param] 0 in UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | +| file://:0:0:0:0 | [summary param] 0 in Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | +| file://:0:0:0:0 | [summary param] 0 in User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | +| file://:0:0:0:0 | [summary param] 0 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 0 in ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 1 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | +| file://:0:0:0:0 | [summary param] 1 in CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 1 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 1 in StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | +| file://:0:0:0:0 | [summary param] 1 in StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | +| file://:0:0:0:0 | [summary param] 1 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 1 in SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | +| file://:0:0:0:0 | [summary param] 1 in SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] -1 in Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | +| file://:0:0:0:0 | [summary param] -1 in Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | +| file://:0:0:0:0 | [summary param] -1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] -1 in EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | +| file://:0:0:0:0 | [summary param] -1 in Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | +| file://:0:0:0:0 | [summary param] -1 in Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | +| file://:0:0:0:0 | [summary param] -1 in FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | +| file://:0:0:0:0 | [summary param] -1 in FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | +| file://:0:0:0:0 | [summary param] -1 in FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | +| file://:0:0:0:0 | [summary param] -1 in Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | +| file://:0:0:0:0 | [summary param] -1 in InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | +| file://:0:0:0:0 | [summary param] -1 in Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] -1 in Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | +| file://:0:0:0:0 | [summary param] -1 in MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | +| file://:0:0:0:0 | [summary param] -1 in MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | +| file://:0:0:0:0 | [summary param] -1 in MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | +| file://:0:0:0:0 | [summary param] -1 in MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] -1 in Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | +| file://:0:0:0:0 | [summary param] -1 in Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | +| file://:0:0:0:0 | [summary param] -1 in Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | +| file://:0:0:0:0 | [summary param] -1 in Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | +| file://:0:0:0:0 | [summary param] -1 in RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | +| file://:0:0:0:0 | [summary param] -1 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] -1 in Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | +| file://:0:0:0:0 | [summary param] -1 in Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | +| file://:0:0:0:0 | [summary param] -1 in UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | +| file://:0:0:0:0 | [summary param] -1 in Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | | main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[0] | | main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[1] | | main.go:38:13:38:13 | 1 | main.go:38:7:38:20 | slice literal | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql index 881d262f400..1b27b27d6dc 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql @@ -1,2 +1,3 @@ import go import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql index 2b11d284076..d5bc1496b3d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql @@ -23,12 +23,10 @@ class TestConfig extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -38,3 +36,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql index f75495313d4..aa9b9c3e074 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql @@ -13,12 +13,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql index 90c0878ff8d..8222ae35d87 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql @@ -21,12 +21,10 @@ class TestConfig extends DataFlow::Configuration { } } -class PromotedFieldsTest extends InlineExpectationsTest { - PromotedFieldsTest() { this = "PromotedFieldsTest" } +module PromotedFieldsTest implements TestSig { + string getARelevantTag() { result = "promotedfields" } - override string getARelevantTag() { result = "promotedfields" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class PromotedFieldsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql index f99f7775a3b..fac89a50650 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql @@ -21,12 +21,10 @@ class TestConfig extends DataFlow::Configuration { } } -class PromotedMethodsTest extends InlineExpectationsTest { - PromotedMethodsTest() { this = "PromotedMethodsTest" } +module PromotedMethodsTest implements TestSig { + string getARelevantTag() { result = "promotedmethods" } - override string getARelevantTag() { result = "promotedmethods" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::Node source, DataFlow::Node sink | config.hasFlow(source, sink) | @@ -38,3 +36,5 @@ class PromotedMethodsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql index edabb61bf5d..9412fb13486 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql @@ -13,12 +13,10 @@ class Configuration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql index e6e99b0e6c2..500572f5d45 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql @@ -13,12 +13,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -41,12 +39,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -56,3 +52,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql index 87e9b301148..17194265598 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql @@ -43,12 +43,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -71,12 +69,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -86,9 +82,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } -// from TaintConfiguration cfg, DataFlow::PartialPathNode source, DataFlow::PartialPathNode sink -// where -// cfg.hasPartialFlow(source, sink, _) -// and -// source.getNode().hasLocationInfo(_, 22, _, _, _) -// select sink, source, sink, "Partial flow from unsanitized user data" + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql index 535fb6dd627..0b1bef94328 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import semmle.go.security.SqlInjection -class SqlInjectionTest extends InlineExpectationsTest { - SqlInjectionTest() { this = "SqlInjectionTest" } +module SqlInjectionTest implements TestSig { + string getARelevantTag() { result = "sqlinjection" } - override string getARelevantTag() { result = "sqlinjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "sqlinjection" and exists(DataFlow::Node sink | any(SqlInjection::Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -17,3 +15,5 @@ class SqlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql index e8c68c1c3e1..2ffca8a692a 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "untrustedflowsource" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedflowsource" } - override string getARelevantTag() { result = "untrustedflowsource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedflowsource" and value = element and exists(UntrustedFlowSource src | value = "\"" + src.toString() + "\"" | @@ -16,12 +14,10 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { } } -class HeaderWriteTest extends InlineExpectationsTest { - HeaderWriteTest() { this = "headerwrite" } +module HeaderWriteTest implements TestSig { + string getARelevantTag() { result = "headerwrite" } - override string getARelevantTag() { result = "headerwrite" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "headerwrite" and exists(Http::HeaderWrite hw, string name, string val | element = hw.toString() | hw.definesHeader(name, val) and @@ -32,12 +28,10 @@ class HeaderWriteTest extends InlineExpectationsTest { } } -class LoggerTest extends InlineExpectationsTest { - LoggerTest() { this = "LoggerTest" } +module LoggerTest implements TestSig { + string getARelevantTag() { result = "logger" } - override string getARelevantTag() { result = "logger" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(LoggerCall log | log.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -48,32 +42,32 @@ class LoggerTest extends InlineExpectationsTest { } } -class Config extends TaintTracking::Configuration { - Config() { this = "goproxy config" } - - override predicate isSource(DataFlow::Node n) { +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n = any(DataFlow::CallNode c | c.getCalleeName().matches("tainted%")).getResult() } - override predicate isSink(DataFlow::Node n) { + predicate isSink(DataFlow::Node n) { n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() } } -class TaintFlow extends InlineExpectationsTest { - TaintFlow() { this = "goproxy flow" } +module Flow = TaintTracking::Global; - override string getARelevantTag() { result = "taintflow" } +module TaintFlow implements TestSig { + string getARelevantTag() { result = "taintflow" } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and value = "" and element = "" and - exists(Config c, DataFlow::Node toNode | + exists(DataFlow::Node toNode | toNode .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - c.hasFlowTo(toNode) + Flow::flowTo(toNode) ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql index 0d411503e34..998afbf88b5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql @@ -16,12 +16,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -31,3 +29,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql index 7cffdcb78ba..ff95de5b731 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql @@ -2,12 +2,10 @@ import go import semmle.go.frameworks.GoKit import TestUtilities.InlineExpectationsTest -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "untrustedflowsourcetest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(UntrustedFlowSource source | source .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -18,3 +16,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql index 8a9292957b3..793308837c1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql @@ -21,12 +21,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class K8sIoApiCoreV1Test extends InlineExpectationsTest { - K8sIoApiCoreV1Test() { this = "K8sIoApiCoreV1Test" } +module K8sIoApiCoreV1Test implements TestSig { + string getARelevantTag() { result = "KsIoApiCoreV" } - override string getARelevantTag() { result = "KsIoApiCoreV" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class K8sIoApiCoreV1Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql index e9b2c13ccca..901dcb9eaf5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql @@ -21,12 +21,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { - K8sIoApimachineryPkgRuntimeTest() { this = "KsIoApimachineryPkgRuntimeTest" } +module K8sIoApimachineryPkgRuntimeTest implements TestSig { + string getARelevantTag() { result = "KsIoApimachineryPkgRuntime" } - override string getARelevantTag() { result = "KsIoApimachineryPkgRuntime" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql index 1650e263252..be38cebd11b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { - K8sIoApimachineryPkgRuntimeTest() { this = "KsIoClientGoTest" } +module K8sIoApimachineryPkgRuntimeTest implements TestSig { + string getARelevantTag() { result = "KsIoClientGo" } - override string getARelevantTag() { result = "KsIoClientGo" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(K8sIoClientGo::SecretInterfaceSource source | source .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql index cfe40a0066e..3f14991d274 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class NoSqlQueryTest extends InlineExpectationsTest { - NoSqlQueryTest() { this = "NoSQLQueryTest" } +module NoSqlQueryTest implements TestSig { + string getARelevantTag() { result = "nosqlquery" } - override string getARelevantTag() { result = "nosqlquery" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(NoSql::Query q | q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class NoSqlQueryTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql index 9d2b876d803..bae5b14ccd4 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql @@ -15,12 +15,10 @@ class TestConfig extends TaintTracking::Configuration { override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } } -class MissingDataFlowTest extends InlineExpectationsTest { - MissingDataFlowTest() { this = "MissingDataFlow" } +module MissingDataFlowTest implements TestSig { + string getARelevantTag() { result = "noflow" } - override string getARelevantTag() { result = "noflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "noflow" and value = "" and exists(Sink sink | @@ -32,12 +30,10 @@ class MissingDataFlowTest extends InlineExpectationsTest { } } -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = "responsebody" } - override string getARelevantTag() { result = "responsebody" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "responsebody" and exists(Http::ResponseBody rb | rb.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -47,3 +43,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql index 31852f1b862..6b1c1f70e04 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class SqlTest extends InlineExpectationsTest { - SqlTest() { this = "SQLTest" } +module SqlTest implements TestSig { + string getARelevantTag() { result = "query" } - override string getARelevantTag() { result = "query" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "query" and exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,12 +15,10 @@ class SqlTest extends InlineExpectationsTest { } } -class QueryString extends InlineExpectationsTest { - QueryString() { this = "QueryString no Query" } +module QueryString implements TestSig { + string getARelevantTag() { result = "querystring" } - override string getARelevantTag() { result = "querystring" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "querystring" and element = "" and exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | @@ -33,30 +29,30 @@ class QueryString extends InlineExpectationsTest { } } -class Config extends TaintTracking::Configuration { - Config() { this = "pg-orm config" } +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - override predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - override predicate isSink(DataFlow::Node n) { + predicate isSink(DataFlow::Node n) { n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() } } -class TaintFlow extends InlineExpectationsTest { - TaintFlow() { this = "pg-orm flow" } +module Flow = TaintTracking::Global; - override string getARelevantTag() { result = "flowfrom" } +module TaintFlow implements TestSig { + string getARelevantTag() { result = "flowfrom" } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flowfrom" and element = "" and - exists(Config c, DataFlow::Node fromNode, DataFlow::Node toNode | + exists(DataFlow::Node fromNode, DataFlow::Node toNode | toNode .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - c.hasFlow(fromNode, toNode) and + Flow::flow(fromNode, toNode) and value = fromNode.asExpr().(StringLit).getValue() ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql index 57796416265..f91654329a1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class FileSystemAccessTest extends InlineExpectationsTest { - FileSystemAccessTest() { this = "FileSystemAccess" } +module FileSystemAccessTest implements TestSig { + string getARelevantTag() { result = "fsaccess" } - override string getARelevantTag() { result = "fsaccess" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(FileSystemAccess f | f.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class FileSystemAccessTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected index 325c5c60a36..da82753fd19 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected @@ -5,861 +5,861 @@ | crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[0] | | crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[1] | | crypto.go:11:42:11:51 | ciphertext | crypto.go:11:2:11:57 | ... := ...[0] | -| file://:0:0:0:0 | parameter 0 of Abs | file://:0:0:0:0 | [summary] to write: return (return[0]) in Abs | -| file://:0:0:0:0 | parameter 0 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 0 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 0 of AddCookie | file://:0:0:0:0 | [summary] to write: argument -1 in AddCookie | -| file://:0:0:0:0 | parameter 0 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 0 of As | file://:0:0:0:0 | [summary] to write: argument 1 in As | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | -| file://:0:0:0:0 | parameter 0 of ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | -| file://:0:0:0:0 | parameter 0 of CanonicalHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalHeaderKey | -| file://:0:0:0:0 | parameter 0 of CanonicalMIMEHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalMIMEHeaderKey | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Client | file://:0:0:0:0 | [summary] to write: return (return[0]) in Client | -| file://:0:0:0:0 | parameter 0 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter 0 of Cut | file://:0:0:0:0 | [summary] to write: return (return[0]) in Cut | -| file://:0:0:0:0 | parameter 0 of Cut | file://:0:0:0:0 | [summary] to write: return (return[1]) in Cut | -| file://:0:0:0:0 | parameter 0 of CutPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutPrefix | -| file://:0:0:0:0 | parameter 0 of CutSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutSuffix | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[1]) in Decode | -| file://:0:0:0:0 | parameter 0 of DecodeHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeHeader | -| file://:0:0:0:0 | parameter 0 of DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | -| file://:0:0:0:0 | parameter 0 of DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | -| file://:0:0:0:0 | parameter 0 of DecryptPEMBlock | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPEMBlock | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Encode | file://:0:0:0:0 | [summary] to write: argument -1 in Encode | -| file://:0:0:0:0 | parameter 0 of EncodeToMemory | file://:0:0:0:0 | [summary] to write: return (return[0]) in EncodeToMemory | -| file://:0:0:0:0 | parameter 0 of EvalSymlinks | file://:0:0:0:0 | [summary] to write: return (return[0]) in EvalSymlinks | -| file://:0:0:0:0 | parameter 0 of Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | -| file://:0:0:0:0 | parameter 0 of ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FileConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileConn | -| file://:0:0:0:0 | parameter 0 of FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | -| file://:0:0:0:0 | parameter 0 of FilePacketConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FilePacketConn | -| file://:0:0:0:0 | parameter 0 of FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | -| file://:0:0:0:0 | parameter 0 of FromSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in FromSlash | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | -| file://:0:0:0:0 | parameter 0 of InsertAfter | file://:0:0:0:0 | [summary] to write: argument -1 in InsertAfter | -| file://:0:0:0:0 | parameter 0 of InsertAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertAfter | -| file://:0:0:0:0 | parameter 0 of InsertBefore | file://:0:0:0:0 | [summary] to write: argument -1 in InsertBefore | -| file://:0:0:0:0 | parameter 0 of InsertBefore | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertBefore | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | -| file://:0:0:0:0 | parameter 0 of LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | -| file://:0:0:0:0 | parameter 0 of LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | -| file://:0:0:0:0 | parameter 0 of Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | -| file://:0:0:0:0 | parameter 0 of Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | -| file://:0:0:0:0 | parameter 0 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 0 of MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | -| file://:0:0:0:0 | parameter 0 of MoveAfter | file://:0:0:0:0 | [summary] to write: argument -1 in MoveAfter | -| file://:0:0:0:0 | parameter 0 of MoveBefore | file://:0:0:0:0 | [summary] to write: argument -1 in MoveBefore | -| file://:0:0:0:0 | parameter 0 of MoveToBack | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToBack | -| file://:0:0:0:0 | parameter 0 of MoveToFront | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToFront | -| file://:0:0:0:0 | parameter 0 of New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | -| file://:0:0:0:0 | parameter 0 of NewBuffer | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBuffer | -| file://:0:0:0:0 | parameter 0 of NewBufferString | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBufferString | -| file://:0:0:0:0 | parameter 0 of NewConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewConn | -| file://:0:0:0:0 | parameter 0 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 0 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 0 of NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | -| file://:0:0:0:0 | parameter 0 of NewListener | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewListener | -| file://:0:0:0:0 | parameter 0 of NewReadWriter | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReadWriter | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReaderDict | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderDict | -| file://:0:0:0:0 | parameter 0 of NewReaderSize | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderSize | -| file://:0:0:0:0 | parameter 0 of NewScanner | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewScanner | -| file://:0:0:0:0 | parameter 0 of NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseMediaType | -| file://:0:0:0:0 | parameter 0 of ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[1]) in ParseMediaType | -| file://:0:0:0:0 | parameter 0 of ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | -| file://:0:0:0:0 | parameter 0 of ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | -| file://:0:0:0:0 | parameter 0 of PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | -| file://:0:0:0:0 | parameter 0 of PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | -| file://:0:0:0:0 | parameter 0 of PushBack | file://:0:0:0:0 | [summary] to write: argument -1 in PushBack | -| file://:0:0:0:0 | parameter 0 of PushBack | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushBack | -| file://:0:0:0:0 | parameter 0 of PushBackList | file://:0:0:0:0 | [summary] to write: argument -1 in PushBackList | -| file://:0:0:0:0 | parameter 0 of PushFront | file://:0:0:0:0 | [summary] to write: argument -1 in PushFront | -| file://:0:0:0:0 | parameter 0 of PushFront | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushFront | -| file://:0:0:0:0 | parameter 0 of PushFrontList | file://:0:0:0:0 | [summary] to write: argument -1 in PushFrontList | -| file://:0:0:0:0 | parameter 0 of Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | -| file://:0:0:0:0 | parameter 0 of QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | -| file://:0:0:0:0 | parameter 0 of QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | -| file://:0:0:0:0 | parameter 0 of Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | -| file://:0:0:0:0 | parameter 0 of QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | -| file://:0:0:0:0 | parameter 0 of QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | -| file://:0:0:0:0 | parameter 0 of Read | file://:0:0:0:0 | [summary] to write: argument 2 in Read | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | -| file://:0:0:0:0 | parameter 0 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter 0 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | -| file://:0:0:0:0 | parameter 0 of ReadRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadRequest | -| file://:0:0:0:0 | parameter 0 of ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadResponse | -| file://:0:0:0:0 | parameter 0 of Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | -| file://:0:0:0:0 | parameter 0 of Remove | file://:0:0:0:0 | [summary] to write: return (return[0]) in Remove | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter 0 of Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | -| file://:0:0:0:0 | parameter 0 of Runes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Runes | -| file://:0:0:0:0 | parameter 0 of ScanBytes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanBytes | -| file://:0:0:0:0 | parameter 0 of ScanLines | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanLines | -| file://:0:0:0:0 | parameter 0 of ScanRunes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanRunes | -| file://:0:0:0:0 | parameter 0 of ScanWords | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanWords | -| file://:0:0:0:0 | parameter 0 of Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | -| file://:0:0:0:0 | parameter 0 of Server | file://:0:0:0:0 | [summary] to write: return (return[0]) in Server | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | -| file://:0:0:0:0 | parameter 0 of SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | -| file://:0:0:0:0 | parameter 0 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 0 of SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | -| file://:0:0:0:0 | parameter 0 of SetPrefix | file://:0:0:0:0 | [summary] to write: argument -1 in SetPrefix | -| file://:0:0:0:0 | parameter 0 of SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitHostPort | -| file://:0:0:0:0 | parameter 0 of SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[1]) in SplitHostPort | -| file://:0:0:0:0 | parameter 0 of SplitList | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitList | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | -| file://:0:0:0:0 | parameter 0 of StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | -| file://:0:0:0:0 | parameter 0 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | -| file://:0:0:0:0 | parameter 0 of SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToSlash | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of TrimBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimBytes | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimString | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimString | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unmarshal | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 0 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 0 of Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | -| file://:0:0:0:0 | parameter 0 of UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | -| file://:0:0:0:0 | parameter 0 of Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | -| file://:0:0:0:0 | parameter 0 of User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | -| file://:0:0:0:0 | parameter 0 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 0 of ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | -| file://:0:0:0:0 | parameter 0 of VolumeName | file://:0:0:0:0 | [summary] to write: return (return[0]) in VolumeName | -| file://:0:0:0:0 | parameter 0 of WithCancel | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithCancel | -| file://:0:0:0:0 | parameter 0 of WithDeadline | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithDeadline | -| file://:0:0:0:0 | parameter 0 of WithTimeout | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithTimeout | -| file://:0:0:0:0 | parameter 0 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | -| file://:0:0:0:0 | parameter 0 of WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | -| file://:0:0:0:0 | parameter 0 of WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | -| file://:0:0:0:0 | parameter 0 of WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteToIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToIP | -| file://:0:0:0:0 | parameter 0 of WriteToUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUDP | -| file://:0:0:0:0 | parameter 0 of WriteToUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUnix | -| file://:0:0:0:0 | parameter 1 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 1 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 1 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 1 of Compact | file://:0:0:0:0 | [summary] to write: argument 0 in Compact | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | -| file://:0:0:0:0 | parameter 1 of CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | -| file://:0:0:0:0 | parameter 1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter 1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | -| file://:0:0:0:0 | parameter 1 of Encode | file://:0:0:0:0 | [summary] to write: argument 0 in Encode | -| file://:0:0:0:0 | parameter 1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter 1 of Error | file://:0:0:0:0 | [summary] to write: argument 0 in Error | -| file://:0:0:0:0 | parameter 1 of FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | -| file://:0:0:0:0 | parameter 1 of HTMLEscape | file://:0:0:0:0 | [summary] to write: argument 0 in HTMLEscape | -| file://:0:0:0:0 | parameter 1 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 1 of MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | -| file://:0:0:0:0 | parameter 1 of MaxBytesReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in MaxBytesReader | -| file://:0:0:0:0 | parameter 1 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 1 of NewRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequest | -| file://:0:0:0:0 | parameter 1 of Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | -| file://:0:0:0:0 | parameter 1 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 1 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 1 of SetCookie | file://:0:0:0:0 | [summary] to write: argument 0 in SetCookie | -| file://:0:0:0:0 | parameter 1 of SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | -| file://:0:0:0:0 | parameter 1 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 1 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 1 of StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | -| file://:0:0:0:0 | parameter 1 of StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | -| file://:0:0:0:0 | parameter 1 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 1 of SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | -| file://:0:0:0:0 | parameter 1 of SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 1 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 1 of WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | -| file://:0:0:0:0 | parameter 1 of WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | -| file://:0:0:0:0 | parameter 1 of WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | -| file://:0:0:0:0 | parameter 1 of WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 2 of CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | -| file://:0:0:0:0 | parameter 2 of DecryptPKCS1v15 | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPKCS1v15 | -| file://:0:0:0:0 | parameter 2 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter 2 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 2 of NewRequestWithContext | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequestWithContext | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 2 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 2 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 2 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 2 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter 3 of DecryptOAEP | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptOAEP | -| file://:0:0:0:0 | parameter 3 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter -1 of Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | -| file://:0:0:0:0 | parameter -1 of Back | file://:0:0:0:0 | [summary] to write: return (return[0]) in Back | -| file://:0:0:0:0 | parameter -1 of Buffered | file://:0:0:0:0 | [summary] to write: return (return[0]) in Buffered | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | -| file://:0:0:0:0 | parameter -1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter -1 of DotReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DotReader | -| file://:0:0:0:0 | parameter -1 of Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | -| file://:0:0:0:0 | parameter -1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter -1 of EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | -| file://:0:0:0:0 | parameter -1 of Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | -| file://:0:0:0:0 | parameter -1 of Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | -| file://:0:0:0:0 | parameter -1 of FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | -| file://:0:0:0:0 | parameter -1 of FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | -| file://:0:0:0:0 | parameter -1 of FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | -| file://:0:0:0:0 | parameter -1 of File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | -| file://:0:0:0:0 | parameter -1 of File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | -| file://:0:0:0:0 | parameter -1 of FileName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileName | -| file://:0:0:0:0 | parameter -1 of FormName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormName | -| file://:0:0:0:0 | parameter -1 of Front | file://:0:0:0:0 | [summary] to write: return (return[0]) in Front | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | -| file://:0:0:0:0 | parameter -1 of Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Init | file://:0:0:0:0 | [summary] to write: return (return[0]) in Init | -| file://:0:0:0:0 | parameter -1 of Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | -| file://:0:0:0:0 | parameter -1 of InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | -| file://:0:0:0:0 | parameter -1 of Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter -1 of Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | -| file://:0:0:0:0 | parameter -1 of MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | -| file://:0:0:0:0 | parameter -1 of MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | -| file://:0:0:0:0 | parameter -1 of MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | -| file://:0:0:0:0 | parameter -1 of MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | -| file://:0:0:0:0 | parameter -1 of Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | -| file://:0:0:0:0 | parameter -1 of NextPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextPart | -| file://:0:0:0:0 | parameter -1 of NextRawPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextRawPart | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter -1 of Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | -| file://:0:0:0:0 | parameter -1 of Peek | file://:0:0:0:0 | [summary] to write: return (return[0]) in Peek | -| file://:0:0:0:0 | parameter -1 of Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | -| file://:0:0:0:0 | parameter -1 of Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | -| file://:0:0:0:0 | parameter -1 of Prev | file://:0:0:0:0 | [summary] to write: return (return[0]) in Prev | -| file://:0:0:0:0 | parameter -1 of Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | -| file://:0:0:0:0 | parameter -1 of ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | -| file://:0:0:0:0 | parameter -1 of ReadCodeLine | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadCodeLine | -| file://:0:0:0:0 | parameter -1 of ReadContinuedLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLine | -| file://:0:0:0:0 | parameter -1 of ReadContinuedLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLineBytes | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDotBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotBytes | -| file://:0:0:0:0 | parameter -1 of ReadDotLines | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotLines | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadForm | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadForm | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFromIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromIP | -| file://:0:0:0:0 | parameter -1 of ReadFromUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUDP | -| file://:0:0:0:0 | parameter -1 of ReadFromUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUnix | -| file://:0:0:0:0 | parameter -1 of ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | -| file://:0:0:0:0 | parameter -1 of ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | -| file://:0:0:0:0 | parameter -1 of ReadLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLineBytes | -| file://:0:0:0:0 | parameter -1 of ReadMIMEHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadMIMEHeader | -| file://:0:0:0:0 | parameter -1 of ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgIP | -| file://:0:0:0:0 | parameter -1 of ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgIP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUDP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUDP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUnix | -| file://:0:0:0:0 | parameter -1 of ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUnix | -| file://:0:0:0:0 | parameter -1 of ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadResponse | -| file://:0:0:0:0 | parameter -1 of ReadSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadSlice | -| file://:0:0:0:0 | parameter -1 of ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | -| file://:0:0:0:0 | parameter -1 of ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | -| file://:0:0:0:0 | parameter -1 of Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | -| file://:0:0:0:0 | parameter -1 of RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter -1 of SetOutput | file://:0:0:0:0 | [summary] to write: argument 0 in SetOutput | -| file://:0:0:0:0 | parameter -1 of Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | -| file://:0:0:0:0 | parameter -1 of Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of Text | file://:0:0:0:0 | [summary] to write: return (return[0]) in Text | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | -| file://:0:0:0:0 | parameter -1 of UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | -| file://:0:0:0:0 | parameter -1 of Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | -| file://:0:0:0:0 | parameter -1 of Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of WriteProxy | file://:0:0:0:0 | [summary] to write: argument 0 in WriteProxy | -| file://:0:0:0:0 | parameter -1 of WriteSubset | file://:0:0:0:0 | [summary] to write: argument 0 in WriteSubset | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of Writer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Writer | +| file://:0:0:0:0 | [summary param] 0 in Abs | file://:0:0:0:0 | [summary] to write: return (return[0]) in Abs | +| file://:0:0:0:0 | [summary param] 0 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 0 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 0 in AddCookie | file://:0:0:0:0 | [summary] to write: argument -1 in AddCookie | +| file://:0:0:0:0 | [summary param] 0 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 0 in As | file://:0:0:0:0 | [summary] to write: argument 1 in As | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | +| file://:0:0:0:0 | [summary param] 0 in ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | +| file://:0:0:0:0 | [summary param] 0 in CanonicalHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalHeaderKey | +| file://:0:0:0:0 | [summary param] 0 in CanonicalMIMEHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalMIMEHeaderKey | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Client | file://:0:0:0:0 | [summary] to write: return (return[0]) in Client | +| file://:0:0:0:0 | [summary param] 0 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] 0 in Cut | file://:0:0:0:0 | [summary] to write: return (return[0]) in Cut | +| file://:0:0:0:0 | [summary param] 0 in Cut | file://:0:0:0:0 | [summary] to write: return (return[1]) in Cut | +| file://:0:0:0:0 | [summary param] 0 in CutPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutPrefix | +| file://:0:0:0:0 | [summary param] 0 in CutSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutSuffix | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[1]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in DecodeHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeHeader | +| file://:0:0:0:0 | [summary param] 0 in DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | +| file://:0:0:0:0 | [summary param] 0 in DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | +| file://:0:0:0:0 | [summary param] 0 in DecryptPEMBlock | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPEMBlock | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Encode | file://:0:0:0:0 | [summary] to write: argument -1 in Encode | +| file://:0:0:0:0 | [summary param] 0 in EncodeToMemory | file://:0:0:0:0 | [summary] to write: return (return[0]) in EncodeToMemory | +| file://:0:0:0:0 | [summary param] 0 in EvalSymlinks | file://:0:0:0:0 | [summary] to write: return (return[0]) in EvalSymlinks | +| file://:0:0:0:0 | [summary param] 0 in Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | +| file://:0:0:0:0 | [summary param] 0 in ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FileConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileConn | +| file://:0:0:0:0 | [summary param] 0 in FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | +| file://:0:0:0:0 | [summary param] 0 in FilePacketConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FilePacketConn | +| file://:0:0:0:0 | [summary param] 0 in FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | +| file://:0:0:0:0 | [summary param] 0 in FromSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in FromSlash | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | +| file://:0:0:0:0 | [summary param] 0 in InsertAfter | file://:0:0:0:0 | [summary] to write: argument -1 in InsertAfter | +| file://:0:0:0:0 | [summary param] 0 in InsertAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertAfter | +| file://:0:0:0:0 | [summary param] 0 in InsertBefore | file://:0:0:0:0 | [summary] to write: argument -1 in InsertBefore | +| file://:0:0:0:0 | [summary param] 0 in InsertBefore | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertBefore | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | +| file://:0:0:0:0 | [summary param] 0 in LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | +| file://:0:0:0:0 | [summary param] 0 in LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | +| file://:0:0:0:0 | [summary param] 0 in Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | +| file://:0:0:0:0 | [summary param] 0 in Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | +| file://:0:0:0:0 | [summary param] 0 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 0 in MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in MoveAfter | file://:0:0:0:0 | [summary] to write: argument -1 in MoveAfter | +| file://:0:0:0:0 | [summary param] 0 in MoveBefore | file://:0:0:0:0 | [summary] to write: argument -1 in MoveBefore | +| file://:0:0:0:0 | [summary param] 0 in MoveToBack | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToBack | +| file://:0:0:0:0 | [summary param] 0 in MoveToFront | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToFront | +| file://:0:0:0:0 | [summary param] 0 in New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | +| file://:0:0:0:0 | [summary param] 0 in NewBuffer | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBuffer | +| file://:0:0:0:0 | [summary param] 0 in NewBufferString | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBufferString | +| file://:0:0:0:0 | [summary param] 0 in NewConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewConn | +| file://:0:0:0:0 | [summary param] 0 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 0 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 0 in NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | +| file://:0:0:0:0 | [summary param] 0 in NewListener | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewListener | +| file://:0:0:0:0 | [summary param] 0 in NewReadWriter | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReadWriter | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReaderDict | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderDict | +| file://:0:0:0:0 | [summary param] 0 in NewReaderSize | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderSize | +| file://:0:0:0:0 | [summary param] 0 in NewScanner | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewScanner | +| file://:0:0:0:0 | [summary param] 0 in NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseMediaType | +| file://:0:0:0:0 | [summary param] 0 in ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[1]) in ParseMediaType | +| file://:0:0:0:0 | [summary param] 0 in ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | +| file://:0:0:0:0 | [summary param] 0 in ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | +| file://:0:0:0:0 | [summary param] 0 in PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | +| file://:0:0:0:0 | [summary param] 0 in PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | +| file://:0:0:0:0 | [summary param] 0 in PushBack | file://:0:0:0:0 | [summary] to write: argument -1 in PushBack | +| file://:0:0:0:0 | [summary param] 0 in PushBack | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushBack | +| file://:0:0:0:0 | [summary param] 0 in PushBackList | file://:0:0:0:0 | [summary] to write: argument -1 in PushBackList | +| file://:0:0:0:0 | [summary param] 0 in PushFront | file://:0:0:0:0 | [summary] to write: argument -1 in PushFront | +| file://:0:0:0:0 | [summary param] 0 in PushFront | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushFront | +| file://:0:0:0:0 | [summary param] 0 in PushFrontList | file://:0:0:0:0 | [summary] to write: argument -1 in PushFrontList | +| file://:0:0:0:0 | [summary param] 0 in Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | +| file://:0:0:0:0 | [summary param] 0 in QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | +| file://:0:0:0:0 | [summary param] 0 in QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | +| file://:0:0:0:0 | [summary param] 0 in Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | +| file://:0:0:0:0 | [summary param] 0 in QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | +| file://:0:0:0:0 | [summary param] 0 in Read | file://:0:0:0:0 | [summary] to write: argument 2 in Read | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | +| file://:0:0:0:0 | [summary param] 0 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] 0 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | +| file://:0:0:0:0 | [summary param] 0 in ReadRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadRequest | +| file://:0:0:0:0 | [summary param] 0 in ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadResponse | +| file://:0:0:0:0 | [summary param] 0 in Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | +| file://:0:0:0:0 | [summary param] 0 in Remove | file://:0:0:0:0 | [summary] to write: return (return[0]) in Remove | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] 0 in Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | +| file://:0:0:0:0 | [summary param] 0 in Runes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Runes | +| file://:0:0:0:0 | [summary param] 0 in ScanBytes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanBytes | +| file://:0:0:0:0 | [summary param] 0 in ScanLines | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanLines | +| file://:0:0:0:0 | [summary param] 0 in ScanRunes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanRunes | +| file://:0:0:0:0 | [summary param] 0 in ScanWords | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanWords | +| file://:0:0:0:0 | [summary param] 0 in Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | +| file://:0:0:0:0 | [summary param] 0 in Server | file://:0:0:0:0 | [summary] to write: return (return[0]) in Server | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | +| file://:0:0:0:0 | [summary param] 0 in SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | +| file://:0:0:0:0 | [summary param] 0 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 0 in SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | +| file://:0:0:0:0 | [summary param] 0 in SetPrefix | file://:0:0:0:0 | [summary] to write: argument -1 in SetPrefix | +| file://:0:0:0:0 | [summary param] 0 in SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitHostPort | +| file://:0:0:0:0 | [summary param] 0 in SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[1]) in SplitHostPort | +| file://:0:0:0:0 | [summary param] 0 in SplitList | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitList | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | +| file://:0:0:0:0 | [summary param] 0 in StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | +| file://:0:0:0:0 | [summary param] 0 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | +| file://:0:0:0:0 | [summary param] 0 in SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToSlash | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in TrimBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimBytes | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimString | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimString | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | +| file://:0:0:0:0 | [summary param] 0 in UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | +| file://:0:0:0:0 | [summary param] 0 in Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | +| file://:0:0:0:0 | [summary param] 0 in User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | +| file://:0:0:0:0 | [summary param] 0 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 0 in ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | +| file://:0:0:0:0 | [summary param] 0 in VolumeName | file://:0:0:0:0 | [summary] to write: return (return[0]) in VolumeName | +| file://:0:0:0:0 | [summary param] 0 in WithCancel | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithCancel | +| file://:0:0:0:0 | [summary param] 0 in WithDeadline | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithDeadline | +| file://:0:0:0:0 | [summary param] 0 in WithTimeout | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithTimeout | +| file://:0:0:0:0 | [summary param] 0 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteToIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToIP | +| file://:0:0:0:0 | [summary param] 0 in WriteToUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUDP | +| file://:0:0:0:0 | [summary param] 0 in WriteToUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUnix | +| file://:0:0:0:0 | [summary param] 1 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 1 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 1 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 1 in Compact | file://:0:0:0:0 | [summary] to write: argument 0 in Compact | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | +| file://:0:0:0:0 | [summary param] 1 in CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | +| file://:0:0:0:0 | [summary param] 1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] 1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Encode | file://:0:0:0:0 | [summary] to write: argument 0 in Encode | +| file://:0:0:0:0 | [summary param] 1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] 1 in Error | file://:0:0:0:0 | [summary] to write: argument 0 in Error | +| file://:0:0:0:0 | [summary param] 1 in FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | +| file://:0:0:0:0 | [summary param] 1 in HTMLEscape | file://:0:0:0:0 | [summary] to write: argument 0 in HTMLEscape | +| file://:0:0:0:0 | [summary param] 1 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 1 in MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | +| file://:0:0:0:0 | [summary param] 1 in MaxBytesReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in MaxBytesReader | +| file://:0:0:0:0 | [summary param] 1 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 1 in NewRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequest | +| file://:0:0:0:0 | [summary param] 1 in Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | +| file://:0:0:0:0 | [summary param] 1 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 1 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 1 in SetCookie | file://:0:0:0:0 | [summary] to write: argument 0 in SetCookie | +| file://:0:0:0:0 | [summary param] 1 in SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | +| file://:0:0:0:0 | [summary param] 1 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 1 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 1 in StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | +| file://:0:0:0:0 | [summary param] 1 in StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | +| file://:0:0:0:0 | [summary param] 1 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 1 in SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | +| file://:0:0:0:0 | [summary param] 1 in SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 1 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 1 in WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | +| file://:0:0:0:0 | [summary param] 2 in DecryptPKCS1v15 | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPKCS1v15 | +| file://:0:0:0:0 | [summary param] 2 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] 2 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 2 in NewRequestWithContext | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequestWithContext | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 2 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 2 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 2 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 2 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] 3 in DecryptOAEP | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptOAEP | +| file://:0:0:0:0 | [summary param] 3 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] -1 in Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | +| file://:0:0:0:0 | [summary param] -1 in Back | file://:0:0:0:0 | [summary] to write: return (return[0]) in Back | +| file://:0:0:0:0 | [summary param] -1 in Buffered | file://:0:0:0:0 | [summary] to write: return (return[0]) in Buffered | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | +| file://:0:0:0:0 | [summary param] -1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] -1 in DotReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DotReader | +| file://:0:0:0:0 | [summary param] -1 in Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | +| file://:0:0:0:0 | [summary param] -1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] -1 in EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | +| file://:0:0:0:0 | [summary param] -1 in Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | +| file://:0:0:0:0 | [summary param] -1 in Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | +| file://:0:0:0:0 | [summary param] -1 in FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | +| file://:0:0:0:0 | [summary param] -1 in FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | +| file://:0:0:0:0 | [summary param] -1 in FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | +| file://:0:0:0:0 | [summary param] -1 in File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | +| file://:0:0:0:0 | [summary param] -1 in File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | +| file://:0:0:0:0 | [summary param] -1 in FileName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileName | +| file://:0:0:0:0 | [summary param] -1 in FormName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormName | +| file://:0:0:0:0 | [summary param] -1 in Front | file://:0:0:0:0 | [summary] to write: return (return[0]) in Front | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | +| file://:0:0:0:0 | [summary param] -1 in Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Init | file://:0:0:0:0 | [summary] to write: return (return[0]) in Init | +| file://:0:0:0:0 | [summary param] -1 in Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | +| file://:0:0:0:0 | [summary param] -1 in InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | +| file://:0:0:0:0 | [summary param] -1 in Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] -1 in Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | +| file://:0:0:0:0 | [summary param] -1 in MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | +| file://:0:0:0:0 | [summary param] -1 in MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | +| file://:0:0:0:0 | [summary param] -1 in MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | +| file://:0:0:0:0 | [summary param] -1 in MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | +| file://:0:0:0:0 | [summary param] -1 in Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | +| file://:0:0:0:0 | [summary param] -1 in NextPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextPart | +| file://:0:0:0:0 | [summary param] -1 in NextRawPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextRawPart | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] -1 in Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | +| file://:0:0:0:0 | [summary param] -1 in Peek | file://:0:0:0:0 | [summary] to write: return (return[0]) in Peek | +| file://:0:0:0:0 | [summary param] -1 in Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | +| file://:0:0:0:0 | [summary param] -1 in Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | +| file://:0:0:0:0 | [summary param] -1 in Prev | file://:0:0:0:0 | [summary] to write: return (return[0]) in Prev | +| file://:0:0:0:0 | [summary param] -1 in Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadCodeLine | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadCodeLine | +| file://:0:0:0:0 | [summary param] -1 in ReadContinuedLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLine | +| file://:0:0:0:0 | [summary param] -1 in ReadContinuedLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLineBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDotBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadDotLines | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotLines | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadForm | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadForm | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFromIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromIP | +| file://:0:0:0:0 | [summary param] -1 in ReadFromUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadFromUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | +| file://:0:0:0:0 | [summary param] -1 in ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | +| file://:0:0:0:0 | [summary param] -1 in ReadLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLineBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadMIMEHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadMIMEHeader | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgIP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgIP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadResponse | +| file://:0:0:0:0 | [summary param] -1 in ReadSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadSlice | +| file://:0:0:0:0 | [summary param] -1 in ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | +| file://:0:0:0:0 | [summary param] -1 in ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | +| file://:0:0:0:0 | [summary param] -1 in Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | +| file://:0:0:0:0 | [summary param] -1 in RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] -1 in SetOutput | file://:0:0:0:0 | [summary] to write: argument 0 in SetOutput | +| file://:0:0:0:0 | [summary param] -1 in Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | +| file://:0:0:0:0 | [summary param] -1 in Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in Text | file://:0:0:0:0 | [summary] to write: return (return[0]) in Text | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | +| file://:0:0:0:0 | [summary param] -1 in UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | +| file://:0:0:0:0 | [summary param] -1 in Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | +| file://:0:0:0:0 | [summary param] -1 in Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in WriteProxy | file://:0:0:0:0 | [summary] to write: argument 0 in WriteProxy | +| file://:0:0:0:0 | [summary param] -1 in WriteSubset | file://:0:0:0:0 | [summary] to write: argument 0 in WriteSubset | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in Writer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Writer | | io.go:14:31:14:43 | "some string" | io.go:14:13:14:44 | call to NewReader | | io.go:16:3:16:3 | definition of w | io.go:16:23:16:27 | &... | | io.go:16:3:16:3 | definition of w | io.go:16:30:16:34 | &... | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql index 273f031fc32..c4c0cafb50e 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql @@ -11,32 +11,29 @@ DataFlow::CallNode getAYamlCall() { isYamlFunction(result.getACalleeIncludingExternals().asFunction()) } -class TaintTransitsFunctionConfig extends TaintTracking::Configuration { - TaintTransitsFunctionConfig() { this = "TaintTransitsFunctionConfig" } - - predicate isSourceSinkPair(DataFlow::Node inNode, DataFlow::Node outNode) { - exists(DataFlow::CallNode cn | cn = getAYamlCall() | - inNode = [cn.getAnArgument(), cn.getReceiver()] and - ( - outNode.(DataFlow::PostUpdateNode).getPreUpdateNode() = - [cn.getAnArgument(), cn.getReceiver()] - or - outNode = cn.getAResult() - ) +predicate isSourceSinkPair(DataFlow::Node inNode, DataFlow::Node outNode) { + exists(DataFlow::CallNode cn | cn = getAYamlCall() | + inNode = [cn.getAnArgument(), cn.getReceiver()] and + ( + outNode.(DataFlow::PostUpdateNode).getPreUpdateNode() = [cn.getAnArgument(), cn.getReceiver()] + or + outNode = cn.getAResult() ) - } - - override predicate isSource(DataFlow::Node n) { this.isSourceSinkPair(n, _) } - - override predicate isSink(DataFlow::Node n) { this.isSourceSinkPair(_, n) } + ) } -class TaintFunctionModelTest extends InlineExpectationsTest { - TaintFunctionModelTest() { this = "TaintFunctionModelTest" } +module TaintTransitsFunctionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { isSourceSinkPair(n, _) } - override string getARelevantTag() { result = "ttfnmodelstep" } + predicate isSink(DataFlow::Node n) { isSourceSinkPair(_, n) } +} - override predicate hasActualResult(Location location, string element, string tag, string value) { +module TaintTransitsFunctionFlow = TaintTracking::Global; + +module TaintFunctionModelTest implements TestSig { + string getARelevantTag() { result = "ttfnmodelstep" } + + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "ttfnmodelstep" and ( exists(TaintTracking::FunctionModel model, DataFlow::CallNode call | call = model.getACall() | @@ -46,9 +43,9 @@ class TaintFunctionModelTest extends InlineExpectationsTest { value = "\"" + model.getAnInputNode(call) + " -> " + model.getAnOutputNode(call) + "\"" ) or - exists(TaintTransitsFunctionConfig config, DataFlow::Node arg, DataFlow::Node output | - config.hasFlow(arg, output) and - config.isSourceSinkPair(arg, output) and + exists(DataFlow::Node arg, DataFlow::Node output | + TaintTransitsFunctionFlow::flow(arg, output) and + isSourceSinkPair(arg, output) and arg.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and element = arg.toString() and @@ -58,12 +55,10 @@ class TaintFunctionModelTest extends InlineExpectationsTest { } } -class MarshalerTest extends InlineExpectationsTest { - MarshalerTest() { this = "MarshalerTest" } +module MarshalerTest implements TestSig { + string getARelevantTag() { result = "marshaler" } - override string getARelevantTag() { result = "marshaler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "marshaler" and exists(MarshalingFunction m, DataFlow::CallNode call | call = m.getACall() | call.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -76,12 +71,10 @@ class MarshalerTest extends InlineExpectationsTest { } } -class UnmarshalerTest extends InlineExpectationsTest { - UnmarshalerTest() { this = "UnmarshalerTest" } +module UnmarshalerTest implements TestSig { + string getARelevantTag() { result = "unmarshaler" } - override string getARelevantTag() { result = "unmarshaler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "unmarshaler" and exists(UnmarshalingFunction m, DataFlow::CallNode call | call = m.getACall() | call.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -93,3 +86,5 @@ class UnmarshalerTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql index a012615e48e..14650f8f20d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql @@ -13,12 +13,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class ZapTest extends InlineExpectationsTest { - ZapTest() { this = "ZapTest" } +module ZapTest implements TestSig { + string getARelevantTag() { result = "zap" } - override string getARelevantTag() { result = "zap" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "zap" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class ZapTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected +++ b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql index 576ce9ba342..298287ec4aa 100644 --- a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql +++ b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql @@ -1,11 +1,4 @@ import go import TestUtilities.InlineFlowTest import semmle.go.security.LogInjection - -class LogInjectionTest extends InlineFlowTest { - override DataFlow::Configuration getTaintFlowConfig() { - result = any(LogInjection::Configuration config) - } - - override DataFlow::Configuration getValueFlowConfig() { none() } -} +import TaintFlowTest diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql index e4eb088abd8..3e7ccd8d8c1 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import semmle.go.security.IncorrectIntegerConversionLib -class TestIncorrectIntegerConversion extends InlineExpectationsTest { - TestIncorrectIntegerConversion() { this = "TestIncorrectIntegerConversion" } +module TestIncorrectIntegerConversion implements TestSig { + string getARelevantTag() { result = "hasValueFlow" } - override string getARelevantTag() { result = "hasValueFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasValueFlow" and exists(DataFlow::Node sink, DataFlow::Node sinkConverted | any(ConversionWithoutBoundsCheckConfig config).hasFlowTo(sink) and @@ -21,3 +19,5 @@ class TestIncorrectIntegerConversion extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 4e4b1ab7e1f..540f282f7c5 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -1,167 +1,180 @@ -package,sink,source,summary,sink:bean-validation,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:remote,summary:taint,summary:value -android.app,35,,103,,,11,,,,,7,,,,,,,,,17,,,,,,,,,,,,,,,,,,18,85 -android.content,24,31,154,,,,,,,,16,,,,,,,,,,,,,,,,,,,8,,,,,4,27,,63,91 -android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,41, -android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 -android.os,,2,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,41,81 -android.support.v4.app,11,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -android.util,6,16,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,16,, -android.webkit,3,2,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,, -android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, -androidx.core.app,6,,95,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,12,83 -androidx.fragment.app,11,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -androidx.slice,2,5,88,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,5,,27,61 -cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.databind,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,63,24 -com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 -com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 -com.google.common.flogger,29,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,, -com.google.common.io,8,,73,,1,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,72,1 -com.google.gson,,,39,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,14 -com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, -com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, -com.opensymphony.xwork2.ognl,3,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,, -com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, -com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, -com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,, -com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, -freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,, -groovy.lang,26,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.text,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.util,5,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -hudson,44,,16,,2,,,,,,,,,,,,,,36,,,,,,,,,6,,,,,,,,,,16, -io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, -io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,, -io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 -io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,2,, -io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,13,143,116 -io.netty.handler.ssl,2,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,, -io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, -io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -io.netty.util,2,,23,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,21,2 -jakarta.faces.context,2,7,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, -jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,94,55 -java.awt,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3 -java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,44,,45,,22,,,,,,,,,,,,,,22,,,,,,,,,,,,,,,,,,,43,2 -java.lang,18,,92,,,,,,,,,,,,,8,,,5,,,4,,,1,,,,,,,,,,,,,56,36 -java.net,13,3,20,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,20, -java.nio,38,,31,,3,,,,,,,,,,,,,,35,,,,,,,,,,,,,,,,,,,31, -java.sql,13,,3,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,2,1 -java.util,44,,484,,,,,,,,,,,,,34,,,,,,,5,2,,1,2,,,,,,,,,,,44,440 -javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -javax.faces.context,2,7,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, -javax.imageio.stream,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, -javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -javax.management.remote,2,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.naming,7,,1,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,1, -javax.net.ssl,2,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.script,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,, -javax.servlet,5,21,2,,,,,,,1,,,,,,,,,1,,,,,,,,,,3,,,,,,,,21,2, -javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, -javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,,,,,,94,55 -javax.xml.transform,2,,6,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1,,,,6, -javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,, -jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 -kotlin,16,,1843,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,1836,7 -net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,, -ognl,6,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, -okhttp3,4,,47,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,22,25 -org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,111,,560,,2,,,,,,,,,,,,,,94,,,,,,,,,15,,,,,,,,,,546,14 -org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, -org.apache.commons.jexl2,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.jexl3,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.lang3,6,,424,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,293,131 -org.apache.commons.logging,6,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.net,9,12,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,12,, -org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 -org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, -org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, -org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,, -org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,, -org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,, -org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hc.core5.http,73,2,45,,,,,,1,,,,,,,,,,,,,,,,,,,72,,,,,,,,,2,45, -org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, -org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 -org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, -org.apache.http,48,3,94,,,,,,2,,,,,,,,,,,,,,,,,,,46,,,,,,,,,3,86,8 -org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,57, -org.apache.log4j,11,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,, -org.apache.logging.log4j,359,,8,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,4,4 -org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.shiro.jndi,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.tools.ant,11,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,, -org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, -org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, -org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,, -org.codehaus.groovy.control,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,, -org.eclipse.jetty.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, -org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,, -org.jboss.logging,324,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,, -org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, -org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, -org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 -org.kohsuke.stapler,3,,1,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,1,,,,,,1, -org.mvel2,16,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,, -org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, -org.scijava.log,13,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,, -org.slf4j,55,,6,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,2,4 -org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 -org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 -org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -org.springframework.http,14,,71,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,61,10 -org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,, -org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,, -org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,, -org.springframework.jndi,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.ldap,47,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, -org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 -org.springframework.util,3,,142,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,90,52 -org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, -org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,, -org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, -org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, -org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -org.springframework.web.util,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,140,25 -org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,2, -org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, -play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -play.mvc,,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,24, -ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 -ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -retrofit2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:remote,summary:taint,summary:value +android.app,35,,103,,,,11,,,,,7,,,,,,,,,17,,,,,,,,,,,,,,,,,,18,85 +android.content,24,31,154,,,,,,,,,16,,,,,,,,,,,,,,,,,,,8,,,,,4,27,,63,91 +android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,41, +android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 +android.os,,2,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,41,81 +android.support.v4.app,11,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +android.util,6,16,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,16,, +android.webkit,3,2,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,, +android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, +androidx.core.app,6,,95,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,12,83 +androidx.fragment.app,11,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,5,,27,61 +antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.alibaba.druid.sql,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.databind,2,,6,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,6, +com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,63,24 +com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 +com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 +com.google.common.flogger,29,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,, +com.google.common.io,8,,73,,,1,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,72,1 +com.google.gson,,,44,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30,14 +com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, +com.jcraft.jsch,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1, +com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, +com.opensymphony.xwork2.ognl,3,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,, +com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, +com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,, +com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, +freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,, +groovy.lang,26,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.text,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.util,5,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +hudson,68,4,2334,,4,3,,,,4,,,,,,,,,,51,,,,,,,,,6,,,,,,,,,4,2258,76 +io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, +io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,, +io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 +io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,2,, +io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,13,143,116 +io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,, +io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +io.netty.util,2,,23,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,21,2 +jakarta.faces.context,2,7,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,94,55 +java.awt,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3 +java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +java.io,49,,45,,,22,,,,,,,,,,,,,,27,,,,,,,,,,,,,,,,,,,43,2 +java.lang,18,,92,,,,,,,,,,,,,,8,,,5,,,4,,,1,,,,,,,,,,,,,56,36 +java.net,13,3,20,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,20, +java.nio,47,,35,,,3,,,,,,,,,,,,,,44,,,,,,,,,,,,,,,,,,,35, +java.sql,13,,2,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,2, +java.util,44,,484,,,,,,,,,,,,,,34,,,,,,,5,2,,1,2,,,,,,,,,,,44,440 +javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +javax.faces.context,2,7,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +javax.imageio.stream,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, +javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +javax.management.remote,2,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.naming,7,,1,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,1, +javax.net.ssl,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.script,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,, +javax.servlet,5,21,2,,,,,,,,1,,,,,,,,,1,,,,,,,,,,3,,,,,,,,21,2, +javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, +javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,,,,,,94,55 +javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1,,,,6, +javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,, +jenkins,,,446,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,423,23 +jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 +kotlin,16,,1847,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,1836,11 +net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,321,17 +net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,, +ognl,6,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, +okhttp3,4,,48,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,23,25 +org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, +org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.commons.io,111,,560,,,2,,,,,,,,,,,,,,94,,,,,,,,,15,,,,,,,,,,546,14 +org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, +org.apache.commons.jexl2,15,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.jexl3,15,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.lang3,6,,424,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,293,131 +org.apache.commons.logging,6,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.net,9,12,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,12,, +org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 +org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, +org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, +org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,, +org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,, +org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,, +org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hc.core5.http,73,2,45,,,,,,,1,,,,,,,,,,,,,,,,,,,72,,,,,,,,,2,45, +org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, +org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 +org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +org.apache.http,48,3,94,,,,,,,2,,,,,,,,,,,,,,,,,,,46,,,,,,,,,3,86,8 +org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,57, +org.apache.log4j,11,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,, +org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,4,4 +org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.shiro.jndi,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.tools.ant,11,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,, +org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, +org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, +org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,, +org.codehaus.groovy.control,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,, +org.eclipse.jetty.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, +org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,, +org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.jboss.logging,324,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,, +org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, +org.jenkins.ui.icon,,,42,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41,1 +org.jenkins.ui.symbol,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,8 +org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 +org.kohsuke.stapler,20,24,343,,,,,,,2,,,,,,,,,,9,,,,,,,,,4,,,,5,,,,,24,332,11 +org.mvel2,16,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,, +org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.scijava.log,13,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,, +org.slf4j,55,,6,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,2,4 +org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 +org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 +org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.springframework.core.io,2,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,, +org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +org.springframework.http,14,,71,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,61,10 +org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,, +org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,, +org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,, +org.springframework.jndi,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.ldap,47,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, +org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 +org.springframework.util,3,,142,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,90,52 +org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, +org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,, +org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, +org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, +org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.util,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,140,25 +org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,2, +org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, +org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +play.mvc,,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,24, +ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 +ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +retrofit2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 644b4aaef6a..dcf4eb2704d 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -18,10 +18,10 @@ Java framework & library support `Google Guava `_,``com.google.common.*``,,730,41,7,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,3,679,170,62,,9,,,17 + Java Standard Library,``java.*``,3,682,184,76,,9,,,17 Java extensions,"``javax.*``, ``jakarta.*``",63,611,34,2,4,,1,1,2 - Kotlin Standard Library,``kotlin*``,,1843,16,14,,,,,2 - `Spring `_,``org.springframework.*``,29,483,113,3,,28,14,,34 - Others,"``cn.hutool.core.codec``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2.ognl``, ``com.rabbitmq.client``, ``com.thoughtworks.xstream``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jodd.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.geogebra.web.full.main``, ``org.hibernate``, ``org.jdbi.v3.core``, ``org.jooq``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``",98,890,520,60,,18,18,,193 - Totals,,255,9182,1973,242,10,122,33,1,382 + Kotlin Standard Library,``kotlin*``,,1847,16,14,,,,,2 + `Spring `_,``org.springframework.*``,29,483,115,4,,28,14,,35 + Others,"``antlr``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2.ognl``, ``com.rabbitmq.client``, ``com.thoughtworks.xstream``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``",126,4467,571,89,6,18,18,,200 + Totals,,283,12766,2040,286,16,122,33,1,390 diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme new file mode 100644 index 00000000000..ecfcf050952 --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme @@ -0,0 +1,1256 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme new file mode 100644 index 00000000000..7cbc85b1f3e --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme @@ -0,0 +1,1255 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties new file mode 100644 index 00000000000..5ba64f71d70 --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove ENUM_ENTRIES +compatibility: full diff --git a/java/kotlin-explorer/.gitignore b/java/kotlin-explorer/.gitignore deleted file mode 100644 index 9c076360bbb..00000000000 --- a/java/kotlin-explorer/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.classpath -.gradle -.idea -.project -.settings -bin/ -build/ -gradle/ -gradlew -gradlew.bat diff --git a/java/kotlin-explorer/README b/java/kotlin-explorer/README deleted file mode 100644 index 0f500d7c25b..00000000000 --- a/java/kotlin-explorer/README +++ /dev/null @@ -1,9 +0,0 @@ - -This shows what is encoded in the kotlin.Metadata section shown in the -output of `javap -v SomeKotlinClass`. - -It is not currently able to extract the information from .class files -itself; the values are hard coded in src/main/kotlin/Explorer.kt - -Run `gradle run` in this directory to run it. - diff --git a/java/kotlin-explorer/build.gradle b/java/kotlin-explorer/build.gradle deleted file mode 100644 index b122d811d4f..00000000000 --- a/java/kotlin-explorer/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' version "${kotlinVersion}" - id 'org.jetbrains.dokka' version '1.4.32' - id "com.vanniktech.maven.publish" version '0.15.1' - id 'application' -} - -group 'com.github.codeql' -version '0.0.1' - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib" - implementation "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0" -} - -repositories { - mavenCentral() -} - -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - kotlinOptions { - jvmTarget = "1.8" - } -} - -application { - mainClass = 'com.github.codeql.ExplorerKt' -} diff --git a/java/kotlin-explorer/gradle.properties b/java/kotlin-explorer/gradle.properties deleted file mode 100644 index 0854241bcda..00000000000 --- a/java/kotlin-explorer/gradle.properties +++ /dev/null @@ -1,7 +0,0 @@ -kotlin.code.style=official -kotlinVersion=1.5.21 - -GROUP=com.github.codeql -VERSION_NAME=0.0.1 -POM_DESCRIPTION=CodeQL Kotlin explorer - diff --git a/java/kotlin-explorer/settings.gradle b/java/kotlin-explorer/settings.gradle deleted file mode 100644 index 18f679f7b75..00000000000 --- a/java/kotlin-explorer/settings.gradle +++ /dev/null @@ -1,8 +0,0 @@ -pluginManagement { - repositories { - mavenCentral() - gradlePluginPortal() - } -} - -rootProject.name = 'codeql-kotlin-explorer' diff --git a/java/kotlin-explorer/src/main/kotlin/Explorer.kt b/java/kotlin-explorer/src/main/kotlin/Explorer.kt deleted file mode 100644 index 31c3eb18dcb..00000000000 --- a/java/kotlin-explorer/src/main/kotlin/Explorer.kt +++ /dev/null @@ -1,217 +0,0 @@ -package com.github.codeql -import kotlinx.metadata.internal.metadata.jvm.deserialization.JvmMetadataVersion -import kotlinx.metadata.jvm.* -import kotlinx.metadata.* - -fun main(args : Array) { - /* - Values from `javap -v` on TestKt.class from: - - class MyClass {} - - class MyParamClass {} - - fun f(x: MyClass, y: MyClass?, - l1: MyParamClass, - l2: MyParamClass, - l3: MyParamClass?, - l4: MyParamClass?) { - } - */ - val kind = 2 - val metadataVersion = intArrayOf(1, 5, 1) - val data1 = arrayOf("\u0000\u0018\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\u001aX\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u00032\b\u0010\u0004\u001a\u0004\u0018\u00010\u00032\u000c\u0010\u0005\u001a\b\u0012\u0004\u0012\u00020\u00030\u00062\u000e\u0010\u0007\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u00030\u00062\u000e\u0010\b\u001a\n\u0012\u0004\u0012\u00020\u0003\u0018\u00010\u00062\u0010\u0010\t\u001a\u000c\u0012\u0006\u0012\u0004\u0018\u00010\u0003\u0018\u00010\u0006") - val data2 = arrayOf("f","","x","LMyClass;","y","l1","LMyParamClass;","l2","l3","l4") - val extraString = null - val packageName = null - val extraInt = 48 - val kch = KotlinClassHeader(kind, metadataVersion, data1, data2, extraString, packageName, extraInt) - - val md = KotlinClassMetadata.read(kch) - when (md) { - is KotlinClassMetadata.Class -> println("Metadata for Class not yet supported") - is KotlinClassMetadata.FileFacade -> { - println("Metadata for FileFacade:") - val kmp = md.toKmPackage() - kmp.accept(MyPackageVisitor(0)) - } - is KotlinClassMetadata.SyntheticClass -> println("Metadata for SyntheticClass not yet supported") - is KotlinClassMetadata.MultiFileClassFacade -> println("Metadata for MultiFileClassFacade not yet supported") - is KotlinClassMetadata.MultiFileClassPart -> println("Metadata for MultiFileClassPart not yet supported") - is KotlinClassMetadata.Unknown -> println("Unknown kind") - else -> println("Unexpected kind") - } -} - -fun pr(indent: Int, s: String) { - println(" ".repeat(indent) + s) -} - -class MyPackageVisitor(val indent: Int): KmPackageVisitor() { - override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor? { - pr(indent, "=> Function; flags:$flags, name:$name") - return MyFunctionVisitor(indent + 1) - } - - override fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? { - pr(indent, "=> Properties not yet handled") - return null - } - - override fun visitTypeAlias(flags: Flags, name: String): KmTypeAliasVisitor? { - pr(indent, "=> Type aliases not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmPackageExtensionVisitor? { - pr(indent, "=> Package extensions; type:$type") - when (type) { - JvmPackageExtensionVisitor.TYPE -> return MyJvmPackageExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyFunctionVisitor(val indent: Int): KmFunctionVisitor() { - override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor? { - pr(indent, "=> Type parameter; flags:$flags, name:$name, id:$id, variance:$variance") - pr(indent, " -> Not yet handled") - return null - } - override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Receiver parameter type; flags:$flags") - pr(indent, " -> Not yet handled") - return null - } - - override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor? { - pr(indent, "=> Value parameter; flags:$flags, name:$name") - return MyValueParameterVisitor(indent + 1) - } - - override fun visitReturnType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Return type; flags:$flags") - return MyTypeVisitor(indent + 1) - } - - override fun visitVersionRequirement(): KmVersionRequirementVisitor? { - pr(indent, "=> VersionRequirement not yet handled") - return null - } - - override fun visitContract(): KmContractVisitor? { - pr(indent, "=> Contract not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? { - pr(indent, "=> Function extensions; type:$type") - when (type) { - JvmFunctionExtensionVisitor.TYPE -> return MyJvmFunctionExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyValueParameterVisitor(val indent: Int): KmValueParameterVisitor() { - override fun visitType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Type; flags:$flags") - return MyTypeVisitor(indent + 1) - } - - override fun visitVarargElementType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> VarargElementType not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmValueParameterExtensionVisitor? { - pr(indent, "=> Value parameter extensions; type:$type; not yet handled") - return null - } -} - -class MyTypeVisitor(val indent: Int): KmTypeVisitor() { - override fun visitClass(name: ClassName) { - pr(indent, "=> Class; name:$name") - } - - override fun visitTypeAlias(name: ClassName) { - pr(indent, "=> Type alias; name:$name") - } - - override fun visitTypeParameter(id: Int) { - pr(indent, "=> Type parameter; id:$id") - } - - override fun visitArgument(flags: Flags, variance: KmVariance): KmTypeVisitor? { - pr(indent, "=> Argument; flags:$flags, variance:$variance") - return MyTypeVisitor(indent + 1) - } - - override fun visitStarProjection() { - pr(indent, "=> Star projection") - } - - override fun visitAbbreviatedType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> AbbreviatedType not yet handled") - return null - } - - override fun visitOuterType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> OuterType not yet handled") - return null - } - - override fun visitFlexibleTypeUpperBound(flags: Flags, typeFlexibilityId: String?): KmTypeVisitor? { - pr(indent, "=> FlexibleTypeUpperBound not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmTypeExtensionVisitor? { - pr(indent, "=> Type extensions; type:$type") - when (type) { - JvmTypeExtensionVisitor.TYPE -> return MyJvmTypeExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyJvmTypeExtensionVisitor(val indent: Int): JvmTypeExtensionVisitor() { - override fun visit(isRaw: Boolean) { - pr(indent, "=> isRaw:$isRaw") - } - - override fun visitAnnotation(annotation: KmAnnotation) { - pr(indent, "=> Annotation; annotation:$annotation") - } -} - -class MyJvmPackageExtensionVisitor(val indent: Int): JvmPackageExtensionVisitor() { - override fun visitLocalDelegatedProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? { - pr(indent, "=> Local delegate not yet handled") - return null - } - - override fun visitModuleName(name: String) { - pr(indent, "=> Module name; name:$name") - } -} - -class MyJvmFunctionExtensionVisitor(val indent: Int): JvmFunctionExtensionVisitor() { - override fun visit(signature: JvmMethodSignature?) { - pr(indent, "=> signature:$signature") - } - - override fun visitLambdaClassOriginName(internalName: String) { - pr(indent, "=> LambdaClassOriginName; internalName:$internalName") - } -} diff --git a/java/kotlin-extractor/kotlin_plugin_versions.py b/java/kotlin-extractor/kotlin_plugin_versions.py index c5d9e433613..bf1c211073a 100755 --- a/java/kotlin-extractor/kotlin_plugin_versions.py +++ b/java/kotlin-extractor/kotlin_plugin_versions.py @@ -24,7 +24,6 @@ def version_string_to_tuple(version): # Version number used by CI. ci_version = '1.8.10' -# Version numbers in the list need to be in semantically increasing order many_versions = [ '1.4.32', '1.5.0', '1.5.10', '1.5.20', '1.5.30', '1.6.0', '1.6.20', '1.7.0', '1.7.20', '1.8.0', '1.9.0-Beta' ] many_versions_tuples = [version_string_to_tuple(v) for v in many_versions] @@ -42,18 +41,13 @@ def get_single_version(fakeVersionOutput = None): if m is None: raise Exception('Cannot detect version of kotlinc (got ' + str(versionOutput) + ')') current_version = version_string_to_tuple(m.group(1)) - matching_minor_versions = [ version for version in many_versions_tuples if version[0:2] == current_version[0:2] ] - if len(matching_minor_versions) == 0: - raise Exception(f'Cannot find a matching minor version for kotlinc version {current_version} (got {versionOutput}; know about {str(many_versions)})') - matching_minor_versions.sort(reverse = True) + many_versions_tuples.sort(reverse = True) - for version in matching_minor_versions: + for version in many_versions_tuples: if version[0:3] <= current_version[0:3]: return version_tuple_to_string(version) - return version_tuple_to_string(matching_minor_versions[-1]) - raise Exception(f'No suitable kotlinc version found for {current_version} (got {versionOutput}; know about {str(many_versions)})') def get_latest_url(): diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java index 81a9f46a71f..79ce2d8d8d3 100644 --- a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java @@ -27,7 +27,6 @@ import java.nio.file.CopyOption; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.AccessControlException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -279,47 +278,6 @@ public class FileUtil || path.charAt(2) == '\\')); } - /** - * Copies a file - * - * @return false if failed to copy. - */ - public static boolean copy (File from, File to) - { - boolean targetFileExisted = to.exists(); - try { - copyFile(from, to, false); - return true; - } - catch (IOException e) { - // If the target did not exist before, make sure - // we delete it if there was any error - if (!targetFileExisted) - to.delete(); - - logger.error("Cannot copy " + from + " to " + to, e); - return false; - } - } - - /** - * Append all of sourceFile to the end of targetFile - like - * copy, but just adds to the end of the file. - * - * @return true iff the append succeeded - */ - public static boolean append (File sourceFile, File targetFile) - { - try { - copyFile(sourceFile, targetFile, true); - return true; - } - catch (IOException e) { - logger.error("Cannot append contents of " + sourceFile + " to " + targetFile, e); - return false; - } - } - /** * Write the contents of the given string to the file, creating it if it does not exist and overwriting it if it does. * @@ -443,82 +401,6 @@ public class FileUtil } } - /** - * Copies a folder recursively, by overwriting files if necessary. Copies all folders but filters - * files. - *

- * IMPORTANT:The contents of from are copied to to, but a - * subdirectory is not created for them. This behaves like rsync -a from/ to. - *

- * If {@code from} is a file rather than a directory, it is copied (assuming the filter matches - * it) to the file named by {@code to} -- this must not already exist as a directory. - * - * @deprecated Use FileUtil8.recursiveCopy instead. - * @param from Directory whose contents should be copied, or a file. - * @param to Directory to which files and subdirectories of from should be copied, or - * a file path (if {@code from} is a file). - * @param filter the filter to use for selecting which files to copy, or null - * @return false if failed to copy. - */ - @Deprecated - public static boolean recursiveCopy (File from, File to, final FileFilter filter) - { - // Make sure we include all subfolders - FileFilter realFilter = new FileFilter() { - @Override - public boolean accept (File pathname) - { - if (filter == null || pathname.isDirectory()) - return true; - else - return filter == null || filter.accept(pathname); - } - }; - return strictRecursiveCopy(from, to, realFilter); - } - - /** - * Copies a folder recursively, by overwriting files if necessary. Unlike - * {@link #recursiveCopy(File, File, FileFilter)}, this version applies the filter to directories - * as well, and only recurses into directories that are accepted by the filter. - *

- * IMPORTANT:The contents of from are copied to to, but a - * subdirectory is not created for them. This behaves like rsync -a from/ to. - *

- * If {@code from} is a file rather than a directory, it is copied (assuming the filter matches - * it) to the file named by {@code to} -- this must not already exist as a directory. - * - * @deprecated Use FileUtil8.recursiveCopy instead. - * @param from Directory whose contents should be copied, or a file. - * @param to Directory to which files and subdirectories of from should be copied, or - * a file path (if {@code from} is a file). - * @param filter the filter to use for selecting which files to copy, or null - * @return false if failed to copy. - */ - @Deprecated - public static boolean strictRecursiveCopy (File from, File to, FileFilter filter) - { - if (!from.exists()) { - return false; - } - if (from.isFile()) { - return copy(from, to); - } - else { - if (!to.exists()) { - if (!to.mkdir()) { - return false; - } - } - boolean success = true; - for (File childFrom : list(from, filter)) { - File childTo = new File(to, childFrom.getName()); - success &= strictRecursiveCopy(childFrom, childTo, filter); - } - return success; - } - } - /** * Writes the entire contents of a stream to a file. Closes input stream when writing is done * @@ -589,62 +471,6 @@ public class FileUtil } } - private static void copyFile (File from, File to, boolean append) throws IOException - { - // Try to exclude the case where the files are the same. If that happens, - // succeed except in 'append' mode since that is probably not the intention - // The logic below works if from and to both exist - and if one of them - // doesn't they can't be the same file! - from = tryMakeCanonical(from); - to = tryMakeCanonical(to); - if (from.equals(to)) { - if (append) - throw new IOException("Trying to append the contents of file " + from + " onto itself"); - else - return; // Nothing to do. - } - - try (FileInputStream fis = new FileInputStream(from); - InputStream in = new BufferedInputStream(fis)) - { - if (!to.exists()) - to.createNewFile(); - try (FileOutputStream fos = new FileOutputStream(to, append); - OutputStream out = new BufferedOutputStream(fos)) - { - byte[] buf = new byte[16 * 1024]; - int count; - while ((count = in.read(buf)) > 0) - out.write(buf, 0, count); - } - } - to.setExecutable(canExecute(from)); - } - - /** - * In the current Java security model, calling {@link File#canExecute()} requires the same - * permission as calling {@link Runtime#exec(String)}. This makes it impossible to run under a - * restrictive security manager if we blindly check for a file's execute bit. - *

- * To work around, if an {@link AccessControlException} arises, and it seems to refer to a lack of - * {@link SecurityConstants#FILE_EXECUTE_ACTION} permission, we suppress the exception and return - * false. Other {@link AccessControlException}s are re-thrown, and otherwise the - * return value coincides with {@link File#canExecute()} on the argument. - */ - private static boolean canExecute (File file) - { - try { - return file.canExecute(); - } - catch (AccessControlException e) { - if (e.getPermission() instanceof FilePermission - && ((FilePermission) e.getPermission()).getActions().contains("execute")) - return false; // deliberately ignoring security failure - throw e; - } - } - - private static final BitSet allowedCharacters = new BitSet(256); static { for (int i = 'a'; i <= 'z'; i++) @@ -1633,22 +1459,6 @@ public class FileUtil } } - /** - * Copy the source properties file to the target, appending the given variable definitions as - * properties (with proper escaping). An optional marker string is printed as a comment before the - * extra variables, if any. - */ - public static void copyPropertiesFile ( - File source, - File target, - Set> extraVariables, - String extraComment) - { - if (source.isFile()) - copy(source, target); - appendProperties(target, extraVariables, extraComment); - } - /** * Append the given set of properties to a specified file, taking care of proper escaping of * special characters. @@ -1904,31 +1714,6 @@ public class FileUtil + "'."); } - /** - * Copy a file, creating any directories as needed. If the destination file (or directory) - * exists, it is overwritten. - * - * @param src The file to be renamed. Must be non-null and must exist. - * @param dest The path to copy the file to. Must be non-null. Will be overwritten if it already exists. - */ - public static void forceCopy(File src, File dest) - { - final String errorPrefix = "FileUtil.forceCopy: "; - if (src == null) - throw new CatastrophicError(errorPrefix + "source File is null."); - if (dest == null) - throw new CatastrophicError(errorPrefix + "destination File is null."); - if (!src.exists()) - throw new ResourceError(errorPrefix + "source File '" + src.toString() + "' does not exist.", new FileNotFoundException(src.toString())); - - mkdirs(dest.getAbsoluteFile().getParentFile()); - if (dest.exists() && !recursiveDelete(dest)) - throw new ResourceError(errorPrefix + "Couldn't overwrite destination file '" + dest.toString() + "'."); - if (!copy(src, dest)) - throw new ResourceError(errorPrefix + "Couldn't copy file '" + src.toString() + "' to '" + dest.toString() - + "'."); - } - /** * Query whether a {@link File} is non-null, and represents an existing file that can be * read. diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index a3bc20d9eda..b37d46080a6 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -1701,12 +1701,13 @@ open class KotlinFileExtractor( private fun extractSyntheticBody(b: IrSyntheticBody, callable: Label) { with("synthetic body", b) { - when (b.kind) { - IrSyntheticBodyKind.ENUM_VALUES -> tw.writeKtSyntheticBody(callable, 1) - IrSyntheticBodyKind.ENUM_VALUEOF -> tw.writeKtSyntheticBody(callable, 2) + val kind = b.kind + when { + kind == IrSyntheticBodyKind.ENUM_VALUES -> tw.writeKtSyntheticBody(callable, 1) + kind == IrSyntheticBodyKind.ENUM_VALUEOF -> tw.writeKtSyntheticBody(callable, 2) + kind == kind_ENUM_ENTRIES -> tw.writeKtSyntheticBody(callable, 3) else -> { - // TODO: Support IrSyntheticBodyKind.ENUM_ENTRIES - logger.errorElement("Unhandled synthetic body kind " + b.kind.javaClass, b) + logger.errorElement("Unhandled synthetic body kind " + kind, b) } } } @@ -2397,9 +2398,9 @@ open class KotlinFileExtractor( return result } - private fun findTopLevelFunctionOrWarn(functionFilter: String, type: String, parameterTypes: Array, warnAgainstElement: IrElement): IrFunction? { + private fun findTopLevelFunctionOrWarn(functionPkg: String, functionName: String, type: String, parameterTypes: Array, warnAgainstElement: IrElement): IrFunction? { - val fn = getFunctionsByFqName(pluginContext, functionFilter) + val fn = getFunctionsByFqName(pluginContext, functionPkg, functionName) .firstOrNull { fnSymbol -> fnSymbol.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type && fnSymbol.owner.valueParameters.map { it.type.classFqName?.asString() }.toTypedArray() contentEquals parameterTypes @@ -2410,15 +2411,15 @@ open class KotlinFileExtractor( extractExternalClassLater(fn.parentAsClass) } } else { - logger.errorElement("Couldn't find JVM intrinsic function $functionFilter in $type", warnAgainstElement) + logger.errorElement("Couldn't find JVM intrinsic function $functionPkg $functionName in $type", warnAgainstElement) } return fn } - private fun findTopLevelPropertyOrWarn(propertyFilter: String, type: String, warnAgainstElement: IrElement): IrProperty? { + private fun findTopLevelPropertyOrWarn(propertyPkg: String, propertyName: String, type: String, warnAgainstElement: IrElement): IrProperty? { - val prop = getPropertiesByFqName(pluginContext, propertyFilter) + val prop = getPropertiesByFqName(pluginContext, propertyPkg, propertyName) .firstOrNull { it.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type } ?.owner @@ -2427,7 +2428,7 @@ open class KotlinFileExtractor( extractExternalClassLater(prop.parentAsClass) } } else { - logger.errorElement("Couldn't find JVM intrinsic property $propertyFilter in $type", warnAgainstElement) + logger.errorElement("Couldn't find JVM intrinsic property $propertyPkg $propertyName in $type", warnAgainstElement) } return prop @@ -3019,7 +3020,7 @@ open class KotlinFileExtractor( } isBuiltinCall(c, "", "kotlin.jvm") -> { // Special case for KClass<*>.java, which is used in the Parcelize plugin. In normal cases, this is already rewritten to the property referenced below: - findTopLevelPropertyOrWarn("kotlin.jvm.java", "kotlin.jvm.JvmClassMappingKt", c)?.let { javaProp -> + findTopLevelPropertyOrWarn("kotlin.jvm", "java", "kotlin.jvm.JvmClassMappingKt", c)?.let { javaProp -> val getter = javaProp.getter if (getter == null) { logger.error("Couldn't find getter of `kotlin.jvm.JvmClassMappingKt::java`") @@ -3051,7 +3052,7 @@ open class KotlinFileExtractor( "kotlin.jvm.internal.ArrayIteratorsKt" } - findTopLevelFunctionOrWarn("kotlin.jvm.internal.iterator", typeFilter, arrayOf(parentClass.kotlinFqName.asString()), c)?.let { iteratorFn -> + findTopLevelFunctionOrWarn("kotlin.jvm.internal", "iterator", typeFilter, arrayOf(parentClass.kotlinFqName.asString()), c)?.let { iteratorFn -> val dispatchReceiver = c.dispatchReceiver if (dispatchReceiver == null) { logger.errorElement("No dispatch receiver found for array iterator call", c) @@ -5316,7 +5317,10 @@ open class KotlinFileExtractor( private fun extractTypeAccessRecursive(t: IrType, location: Label, parent: Label, idx: Int, typeContext: TypeContext = TypeContext.OTHER): Label { val typeAccessId = extractTypeAccess(useType(t, typeContext), location, parent, idx) if (t is IrSimpleType) { - t.arguments.forEachIndexed { argIdx, arg -> + // From 1.9, the list might change when we call erase, + // so we make a copy that it is safe to iterate over. + val argumentsCopy = t.arguments.toList() + argumentsCopy.forEachIndexed { argIdx, arg -> extractWildcardTypeAccessRecursive(arg, location, typeAccessId, argIdx) } } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt index 57815fc4409..b429224bc71 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt @@ -1,33 +1,18 @@ package com.github.codeql.utils -import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name fun getClassByFqName(pluginContext: IrPluginContext, fqName: String): IrClassSymbol? { return getClassByFqName(pluginContext, FqName(fqName)) } -fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceClass(fqName) +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: String, name: String): Collection { + return getFunctionsByFqName(pluginContext, FqName(pkgName), Name.identifier(name)) } -fun getFunctionsByFqName(pluginContext: IrPluginContext, fqName: String): Collection { - return getFunctionsByFqName(pluginContext, FqName(fqName)) -} - -private fun getFunctionsByFqName(pluginContext: IrPluginContext, fqName: FqName): Collection { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceFunctions(fqName) -} - -fun getPropertiesByFqName(pluginContext: IrPluginContext, fqName: String): Collection { - return getPropertiesByFqName(pluginContext, FqName(fqName)) -} - -private fun getPropertiesByFqName(pluginContext: IrPluginContext, fqName: FqName): Collection { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceProperties(fqName) +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: String, name: String): Collection { + return getPropertiesByFqName(pluginContext, FqName(pkgName), Name.identifier(name)) } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt deleted file mode 100644 index 45d573da9c7..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.jetbrains.kotlin.backend.common.extensions - -@RequiresOptIn("This API is not available after FIR") -annotation class FirIncompatiblePluginAPI - diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt new file mode 100644 index 00000000000..755772d90c6 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt @@ -0,0 +1,20 @@ +package com.github.codeql.utils + +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name + +fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { + return pluginContext.referenceClass(fqName) +} + +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val fqName = pkgName.child(name) + return pluginContext.referenceFunctions(fqName) +} + +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val fqName = pkgName.child(name) + return pluginContext.referenceProperties(fqName) +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt new file mode 100644 index 00000000000..fd3fc1f8e20 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt @@ -0,0 +1,6 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind + +val kind_ENUM_ENTRIES: IrSyntheticBodyKind? = null + diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt deleted file mode 100644 index 48829cc30c5..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.github.codeql - -// The compiler provides the annotation class, so we don't need to do -// anything diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt new file mode 100644 index 00000000000..8d70b66cf27 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt @@ -0,0 +1,24 @@ +package com.github.codeql.utils + +import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.CallableId +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name + +fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { + val id = ClassId.topLevel(fqName) + return pluginContext.referenceClass(id) +} + +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val id = CallableId(pkgName, name) + return pluginContext.referenceFunctions(id) +} + +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val id = CallableId(pkgName, name) + return pluginContext.referenceProperties(id) +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt new file mode 100644 index 00000000000..d0dbb5b1247 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt @@ -0,0 +1,6 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind + +val kind_ENUM_ENTRIES: IrSyntheticBodyKind? = IrSyntheticBodyKind.ENUM_ENTRIES + diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected +++ b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql index 78afdd7bb66..65f44797116 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql +++ b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql @@ -19,12 +19,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module InlineFlowTest implements TestSig { + string getARelevantTag() { result = "flow" } - override string getARelevantTag() { result = "flow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(DataFlow::Node sink | Flow::flowTo(sink) | sink.getLocation() = location and @@ -33,3 +31,5 @@ class InlineFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 53fb1470bb9..1056cefb86a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,61 @@ +## 0.6.3 + +### New Features + +* Kotlin versions up to 1.9.0 are now supported. + +### Minor Analysis Improvements + +* Added flow through the block arguments of `kotlin.io.use` and `kotlin.with`. +* Added models for the following packages: + + * com.alibaba.druid.sql + * com.fasterxml.jackson.databind + * com.jcraft.jsch + * io.netty.handler.ssl + * okhttp3 + * org.antlr.runtime + * org.fusesource.leveldbjni + * org.influxdb + * org.springframework.core.io + * org.yaml.snakeyaml +* Deleted the deprecated `getRHS` predicate from the `LValue` class, use `getRhs` instead. +* Deleted the deprecated `getCFGNode` predicate from the `SsaVariable` class, use `getCfgNode` instead. +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Added models for the following packages: + + * java.lang + * java.nio.file +* Added dataflow models for the Gson deserialization library. +* Added models for the following packages: + + * okhttp3 +* Added more dataflow models for the Play Framework. +* Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. +* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. +* Path creation sinks modeled in `PathCreation.qll` have been added to the models-as-data sink kind `path-injection`. +* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. +* Changed the `android-widget` Java source kind to `remote`. Any custom data extensions that use the `android-widget` source kind will need to be updated accordingly in order to continue working. +* Updated the following Java sink kind names. Any custom data extensions will need to be updated accordingly in order to continue working. + * `sql` to `sql-injection` + * `url-redirect` to `url-redirection` + * `xpath` to `xpath-injection` + * `ssti` to `template-injection` + * `logging` to `log-injection` + * `groovy` to `groovy-injection` + * `jexl` to `jexl-injection` + * `mvel` to `mvel-injection` + * `xslt` to `xslt-injection` + * `ldap` to `ldap-injection` + * `pending-intent-sent` to `pending-intents` + * `intent-start` to `intent-redirection` + * `set-hostname-verifier` to `hostname-verification` + * `header-splitting` to `response-splitting` + * `xss` to `html-injection` and `js-injection` + * `write-file` to `file-system-store` + * `create-file` and `read-file` to `path-injection` + * `open-url` and `jdbc-url` to `request-forgery` + ## 0.6.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/2023-05-05-java-sink-kind-revamp.md b/java/ql/lib/change-notes/2023-05-05-java-sink-kind-revamp.md deleted file mode 100644 index ef54f491051..00000000000 --- a/java/ql/lib/change-notes/2023-05-05-java-sink-kind-revamp.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the following Java sink kind names. Any custom data extensions will need to be updated accordingly in order to continue working. - * `sql` to `sql-injection` - * `url-redirect` to `url-redirection` - * `xpath` to `xpath-injection` - * `ssti` to `template-injection` - * `logging` to `log-injection` - * `groovy` to `groovy-injection` - * `jexl` to `jexl-injection` - * `mvel` to `mvel-injection` - * `xslt` to `xslt-injection` - * `ldap` to `ldap-injection` - * `pending-intent-sent` to `pending-intents` - * `intent-start` to `intent-redirection` - * `set-hostname-verifier` to `hostname-verification` - * `header-splitting` to `response-splitting` - * `xss` to `html-injection` and `js-injection` - * `write-file` to `file-system-store` - * `create-file` and `read-file` to `path-injection` - * `open-url` and `jdbc-url` to `request-forgery` diff --git a/java/ql/lib/change-notes/2023-05-12-androidwidget-source-kind-to-remote.md b/java/ql/lib/change-notes/2023-05-12-androidwidget-source-kind-to-remote.md deleted file mode 100644 index 7a2714a6527..00000000000 --- a/java/ql/lib/change-notes/2023-05-12-androidwidget-source-kind-to-remote.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Changed the `android-widget` Java source kind to `remote`. Any custom data extensions that use the `android-widget` source kind will need to be updated accordingly in order to continue working. diff --git a/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md b/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md deleted file mode 100644 index 8d81c97d9e3..00000000000 --- a/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. - diff --git a/java/ql/lib/change-notes/2023-05-22-hudson-models.md b/java/ql/lib/change-notes/2023-05-22-hudson-models.md new file mode 100644 index 00000000000..55e2acae00e --- /dev/null +++ b/java/ql/lib/change-notes/2023-05-22-hudson-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more models for the Hudson framework. \ No newline at end of file diff --git a/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md b/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md deleted file mode 100644 index bba77d98d89..00000000000 --- a/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. diff --git a/java/ql/lib/change-notes/2023-05-22-stapler-models.md b/java/ql/lib/change-notes/2023-05-22-stapler-models.md new file mode 100644 index 00000000000..37c7250b953 --- /dev/null +++ b/java/ql/lib/change-notes/2023-05-22-stapler-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more models for the Stapler framework. diff --git a/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md b/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md deleted file mode 100644 index 85fc9b89197..00000000000 --- a/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. diff --git a/java/ql/lib/change-notes/2023-05-24-kotlin-1.9.0.md b/java/ql/lib/change-notes/2023-05-24-kotlin-1.9.0.md deleted file mode 100644 index f3647cc5488..00000000000 --- a/java/ql/lib/change-notes/2023-05-24-kotlin-1.9.0.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Kotlin versions up to 1.9.0 are now supported. diff --git a/java/ql/lib/change-notes/2023-05-26-play-framework-models.md b/java/ql/lib/change-notes/2023-05-26-play-framework-models.md deleted file mode 100644 index 69db10413eb..00000000000 --- a/java/ql/lib/change-notes/2023-05-26-play-framework-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added more dataflow models for the Play Framework. diff --git a/java/ql/lib/change-notes/2023-05-30-gson-models.md b/java/ql/lib/change-notes/2023-05-30-gson-models.md deleted file mode 100644 index 306d797ff1a..00000000000 --- a/java/ql/lib/change-notes/2023-05-30-gson-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added dataflow models for the Gson deserialization library. diff --git a/java/ql/lib/change-notes/2023-05-30-new-models.md b/java/ql/lib/change-notes/2023-05-30-new-models.md deleted file mode 100644 index 24e7563d727..00000000000 --- a/java/ql/lib/change-notes/2023-05-30-new-models.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the following packages: - - * okhttp3 diff --git a/java/ql/lib/change-notes/2023-06-08-type-strengthening.md b/java/ql/lib/change-notes/2023-06-08-type-strengthening.md new file mode 100644 index 00000000000..60daaa53058 --- /dev/null +++ b/java/ql/lib/change-notes/2023-06-08-type-strengthening.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. diff --git a/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md b/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md new file mode 100644 index 00000000000..da2f90c2326 --- /dev/null +++ b/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md @@ -0,0 +1,8 @@ +--- +category: minorAnalysis +--- +* Added automatically-generated dataflow models for the following frameworks and libraries: + * `hudson` + * `jenkins` + * `net.sf.json` + * `stapler` diff --git a/java/ql/lib/change-notes/released/0.6.3.md b/java/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..05c95272941 --- /dev/null +++ b/java/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,57 @@ +## 0.6.3 + +### New Features + +* Kotlin versions up to 1.9.0 are now supported. + +### Minor Analysis Improvements + +* Added flow through the block arguments of `kotlin.io.use` and `kotlin.with`. +* Added models for the following packages: + + * com.alibaba.druid.sql + * com.fasterxml.jackson.databind + * com.jcraft.jsch + * io.netty.handler.ssl + * okhttp3 + * org.antlr.runtime + * org.fusesource.leveldbjni + * org.influxdb + * org.springframework.core.io + * org.yaml.snakeyaml +* Deleted the deprecated `getRHS` predicate from the `LValue` class, use `getRhs` instead. +* Deleted the deprecated `getCFGNode` predicate from the `SsaVariable` class, use `getCfgNode` instead. +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Added models for the following packages: + + * java.lang + * java.nio.file +* Added dataflow models for the Gson deserialization library. +* Added models for the following packages: + + * okhttp3 +* Added more dataflow models for the Play Framework. +* Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. +* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. +* Path creation sinks modeled in `PathCreation.qll` have been added to the models-as-data sink kind `path-injection`. +* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. +* Changed the `android-widget` Java source kind to `remote`. Any custom data extensions that use the `android-widget` source kind will need to be updated accordingly in order to continue working. +* Updated the following Java sink kind names. Any custom data extensions will need to be updated accordingly in order to continue working. + * `sql` to `sql-injection` + * `url-redirect` to `url-redirection` + * `xpath` to `xpath-injection` + * `ssti` to `template-injection` + * `logging` to `log-injection` + * `groovy` to `groovy-injection` + * `jexl` to `jexl-injection` + * `mvel` to `mvel-injection` + * `xslt` to `xslt-injection` + * `ldap` to `ldap-injection` + * `pending-intent-sent` to `pending-intents` + * `intent-start` to `intent-redirection` + * `set-hostname-verifier` to `hostname-verification` + * `header-splitting` to `response-splitting` + * `xss` to `html-injection` and `js-injection` + * `write-file` to `file-system-store` + * `create-file` and `read-file` to `path-injection` + * `open-url` and `jdbc-url` to `request-forgery` diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/java/ql/lib/config/semmlecode.dbscheme b/java/ql/lib/config/semmlecode.dbscheme index 7cbc85b1f3e..ecfcf050952 100644 --- a/java/ql/lib/config/semmlecode.dbscheme +++ b/java/ql/lib/config/semmlecode.dbscheme @@ -1219,6 +1219,7 @@ ktSyntheticBody( int kind: int ref // 1: ENUM_VALUES // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES ) ktLocalFunction( diff --git a/java/ql/lib/ext/com.alibaba.druid.sql.model.yml b/java/ql/lib/ext/com.alibaba.druid.sql.model.yml new file mode 100644 index 00000000000..952cd6e8f1b --- /dev/null +++ b/java/ql/lib/ext/com.alibaba.druid.sql.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["com.alibaba.druid.sql", "SQLUtils", False, "toMySqlString", "(SQLObject)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml b/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml index 3768007ebe7..988820e84dd 100644 --- a/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml +++ b/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml @@ -9,3 +9,9 @@ extensions: - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "valueToTree", "", "", "Argument[0].MapValue", "ReturnValue", "taint", "manual"] - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "valueToTree", "", "", "Argument[0].MapValue.Element", "ReturnValue", "taint", "manual"] - ["com.fasterxml.jackson.databind", "ObjectReader", False, "createParser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "readValue", "(File,Class)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "writeValue", "(File,Object)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/com.google.gson.model.yml b/java/ql/lib/ext/com.google.gson.model.yml index 96f5355b2dc..abc3693ae00 100644 --- a/java/ql/lib/ext/com.google.gson.model.yml +++ b/java/ql/lib/ext/com.google.gson.model.yml @@ -26,18 +26,23 @@ extensions: - ["com.google.gson", "JsonElement", True, "getAsJsonPrimitive", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["com.google.gson", "JsonElement", True, "getAsString", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["com.google.gson", "JsonElement", True, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["com.google.gson", "JsonArray", True, "add", "", "", "Argument[0]", "Argument[this].Element", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Boolean)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Character)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(JsonElement)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Number)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(String)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "addAll", "(JsonArray)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["com.google.gson", "JsonArray", True, "asList", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["com.google.gson", "JsonArray", True, "get", "", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["com.google.gson", "JsonArray", True, "set", "", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["com.google.gson", "JsonObject", True, "add", "", "", "Argument[0]", "Argument[this].MapKey", "value", "manual"] - ["com.google.gson", "JsonObject", True, "add", "", "", "Argument[1]", "Argument[this].MapValue", "value", "manual"] - ["com.google.gson", "JsonObject", True, "addProperty", "(String,String)", "", "Argument[0]", "Argument[this].MapKey", "value", "manual"] - - ["com.google.gson", "JsonObject", True, "addProperty", "(String,String)", "", "Argument[1]", "Argument[this].MapValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "addProperty", "(String,String)", "", "Argument[1]", "Argument[this].MapValue", "taint", "manual"] - ["com.google.gson", "JsonObject", True, "asMap", "", "", "Argument[this].MapKey", "ReturnValue.MapKey", "value", "manual"] - ["com.google.gson", "JsonObject", True, "asMap", "", "", "Argument[this].MapValue", "ReturnValue.MapValue", "value", "manual"] - ["com.google.gson", "JsonObject", True, "entrySet", "", "", "Argument[this].MapKey", "ReturnValue.Element.MapKey", "value", "manual"] - - ["com.google.gson", "JsonObject", True, "entrySet", "", "", "Argument[this].MapKey", "ReturnValue.Element.MapValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "entrySet", "", "", "Argument[this].MapValue", "ReturnValue.Element.MapValue", "value", "manual"] - ["com.google.gson", "JsonObject", True, "get", "", "", "Argument[this].MapValue", "ReturnValue", "value", "manual"] - ["com.google.gson", "JsonObject", True, "keySet", "", "", "Argument[this].MapKey", "ReturnValue.Element", "value", "manual"] - ["com.google.gson", "JsonPrimitive", True, "JsonPrimitive", "(Character)", "", "Argument[0]", "Argument[this]", "taint", "manual"] diff --git a/java/ql/lib/ext/com.jcraft.jsch.model.yml b/java/ql/lib/ext/com.jcraft.jsch.model.yml new file mode 100644 index 00000000000..3d658630d56 --- /dev/null +++ b/java/ql/lib/ext/com.jcraft.jsch.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["com.jcraft.jsch", "JSch", True, "getSession", "(String,String,int)", "", "Argument[1]", "request-forgery", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["com.jcraft.jsch", "ChannelSftp", True, "realpath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/generated/jenkins-json-lib.model.yml b/java/ql/lib/ext/generated/jenkins-json-lib.model.yml new file mode 100644 index 00000000000..b028104472f --- /dev/null +++ b/java/ql/lib/ext/generated/jenkins-json-lib.model.yml @@ -0,0 +1,598 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Jenkins JSON Lib framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(String)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["net.sf.json.filters", "AndPropertyFilter", true, "AndPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "AndPropertyFilter", true, "AndPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "CompositePropertyFilter", true, "CompositePropertyFilter", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "CompositePropertyFilter", true, "addPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "MappingPropertyFilter", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "addPropertyFilter", "(Object,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "addPropertyFilter", "(Object,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "NotPropertyFilter", true, "NotPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "OrPropertyFilter", true, "OrPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "OrPropertyFilter", true, "OrPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonGroovyBuilder", true, "getJsonConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonGroovyBuilder", true, "setJsonConfig", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "JsonSlurper", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parseText", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", true, "getGroupIfMatches", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "JSONBuilder", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "array", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "endArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "endObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "key", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "object", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "JSONTokener", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "next", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "(JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "(JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "convertToJavaIdentifier", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "convertToJavaIdentifier", "(String,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getFunctionBody", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getFunctionParams", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getProperties", "(JSONObject)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "stripQuotes", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToCanonicalString", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToString", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToString", "(Object,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JavaIdentifierTransformer", true, "transformToJavaIdentifier", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object,JsonConfig)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object,JsonConfig)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "WebHijackPreventionStrategy", true, "protect", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "protect", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "protect", "(JSON,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "toString", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getArrayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getElementName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getExpandableProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getObjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getRootName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setArrayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setElementName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setExpandableProperties", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setObjectName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setRootName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "toString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "toString", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "write", "(Writer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "writeCanonical", "(Writer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "add", "(Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "add", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "addAll", "(Collection,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "addAll", "(int,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "discard", "(Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "discard", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONNull)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONNull)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONObject)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONObject)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "fromObject", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "fromObject", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getJSONArray", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getJSONObject", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "opt", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optJSONArray", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optJSONObject", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "set", "(int,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "set", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toJSONObject", "(JSONArray)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toJSONObject", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Class,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Object,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Object,JsonConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String[],String)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulateAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulateAll", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "discard", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getJSONArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getJSONObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "keys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "names", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "names", "(JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "opt", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optJSONArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optJSONObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "putAll", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "remove", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Class,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[0].Element", "Argument[1]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[2]", "Argument[1]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toJSONArray", "(JSONArray)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "addIgnoreFieldAnnotation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "addJsonEventListener", "(JsonEventListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "copy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findDefaultValueProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJavaPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonBeanProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getClassMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getCycleDetectionStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getDefaultValueProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getIgnoreFieldAnnotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaIdentifierTransformer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaPropertyFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonBeanProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonEventListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonPropertyFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonValueProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getMergedExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getMergedExcludes", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getNewBeanInstanceStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertyExclusionClassMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertySetStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerDefaultValueProcessor", "(Class,DefaultValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJavaPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonBeanProcessor", "(Class,JsonBeanProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,Class,JsonValueProcessor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,JsonValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,String,JsonValueProcessor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(String,JsonValueProcessor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(String,JsonValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setClassMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setCycleDetectionStrategy", "(CycleDetectionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setDefaultValueProcessorMatcher", "(DefaultValueProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setExcludes", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaIdentifierTransformer", "(JavaIdentifierTransformer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonBeanProcessorMatcher", "(JsonBeanProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonValueProcessorMatcher", "(JsonValueProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setNewBeanInstanceStrategy", "(NewBeanInstanceStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertyExclusionClassMatcher", "(PropertyExclusionClassMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertySetStrategy", "(PropertySetStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["net.sf.json.filters", "CompositePropertyFilter", "removePropertyFilter", "(PropertyFilter)", "summary", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", "removePropertyFilter", "(Object)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(File)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(String)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(URL)", "summary", "df-generated"] + - ["net.sf.json.processors", "DefaultValueProcessor", "getDefaultValue", "(Class)", "summary", "df-generated"] + - ["net.sf.json.processors", "DefaultValueProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonBeanProcessor", "processBean", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonBeanProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessor", "processArrayValue", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessor", "processObjectValue", "(String,Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonVerifier", "isValidJsonValue", "(Object)", "summary", "df-generated"] + - ["net.sf.json.processors", "PropertyNameProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.regexp", "JdkRegexpMatcher", "JdkRegexpMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "JdkRegexpMatcher", "JdkRegexpMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "Perl5RegexpMatcher", "Perl5RegexpMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "Perl5RegexpMatcher", "Perl5RegexpMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", "getGroupIfMatches", "(String,int)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", "matches", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "getMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "getMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "isJDK13", "()", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSON,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONArray,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONArray,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONFunction,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONNull,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONObject,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONObject,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSON,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONFunction)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONFunction,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONNull)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONNull,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONFunction)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONNull)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertJsonEquals", "(String,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertJsonEquals", "(String,String,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNotNull", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNotNull", "(String,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNull", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNull", "(String,JSON)", "summary", "df-generated"] + - ["net.sf.json.util", "CycleDetectionStrategy", "handleRepeatedReferenceAsArray", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "CycleDetectionStrategy", "handleRepeatedReferenceAsObject", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "EnumMorpher", "EnumMorpher", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONStringer", "toString", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "back", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "dehexchar", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "length", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "matches", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "more", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "next", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "next", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextClean", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextString", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextTo", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextTo", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "peek", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "reset", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "skipPast", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "skipTo", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "syntaxError", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "doubleToString", "(double)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getInnerComponentType", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getMorpherRegistry", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getTypeClass", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "hasQuotes", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "hashCode", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isArray", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isArray", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isBoolean", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isBoolean", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isDouble", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isFunction", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isFunctionHeader", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isJavaIdentifier", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isJsonKeyword", "(String,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNull", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNumber", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNumber", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isObject", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isString", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isString", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "mayBeJSON", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "newDynaBean", "(JSONObject)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "newDynaBean", "(JSONObject,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "numberToString", "(Number)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "quote", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "quoteCanonical", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "testValidity", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "transformNumber", "(Number)", "summary", "df-generated"] + - ["net.sf.json.util", "JavaIdentifierTransformer", "transformToJavaIdentifier", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "NewBeanInstanceStrategy", "newInstance", "(Class,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertyExclusionClassMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertyFilter", "apply", "(Object,String,Object)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", "setProperty", "(Object,String,Object)", "summary", "df-generated"] + - ["net.sf.json.util", "WebHijackPreventionStrategy", "protect", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "WebUtils", "getWebHijackPreventionStrategy", "()", "summary", "df-generated"] + - ["net.sf.json.util", "WebUtils", "setWebHijackPreventionStrategy", "(WebHijackPreventionStrategy)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "clearNamespaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "clearNamespaces", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isForceTopLevelObject", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isNamespaceLenient", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isRemoveNamespacePrefixFromElements", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isSkipNamespaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isSkipWhitespace", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTrimSpaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTypeHintsCompatibility", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTypeHintsEnabled", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "read", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromFile", "(File)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromFile", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromStream", "(InputStream)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "removeNamespace", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "removeNamespace", "(String,String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setForceTopLevelObject", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setNamespaceLenient", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setRemoveNamespacePrefixFromElements", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setSkipNamespaces", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setSkipWhitespace", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTrimSpaces", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTypeHintsCompatibility", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTypeHintsEnabled", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "write", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "write", "(JSON,String)", "summary", "df-generated"] + - ["net.sf.json", "JSON", "isArray", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "isEmpty", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "size", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "toString", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSON", "toString", "(int,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "contains", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "containsAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getBoolean", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getCollectionType", "(PropertyDescriptor,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getDimensions", "(JSONArray)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getDouble", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getInt", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getLong", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "isExpandElements", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optBoolean", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optBoolean", "(int,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optDouble", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optDouble", "(int,double)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optInt", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optInt", "(int,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optLong", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optLong", "(int,long)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "removeAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "retainAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "setExpandElements", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Class)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Class,Map)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(String,Throwable)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(Throwable)", "summary", "df-generated"] + - ["net.sf.json", "JSONNull", "getInstance", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONNull", "toString", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "JSONObject", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "containsValue", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getBoolean", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getDouble", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getInt", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getLong", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "has", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "isNullObject", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optBoolean", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optBoolean", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optDouble", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optDouble", "(String,double)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optInt", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optInt", "(String,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optLong", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optLong", "(String,long)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "toBean", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "toBean", "(JSONObject)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "addIgnoreFieldAnnotation", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJavaPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonBeanProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonEventListeners", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonValueProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearPropertyExclusions", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "disableEventTriggering", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "enableEventTriggering", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getArrayMode", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getCollectionType", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getEnclosedType", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getRootClass", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isAllowNonStringKeys", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isEventTriggeringEnabled", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isHandleJettisonEmptyElement", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isHandleJettisonSingleElementArray", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreDefaultExcludes", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreJPATransient", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnorePublicFields", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreTransientFields", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreUnreadableProperty", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isJavascriptCompliant", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isSkipJavaIdentifierTransformationInMapKeys", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "registerPropertyExclusion", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "registerPropertyExclusions", "(Class,String[])", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeIgnoreFieldAnnotation", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeIgnoreFieldAnnotation", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeJsonEventListener", "(JsonEventListener)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "reset", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setAllowNonStringKeys", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setArrayMode", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setCollectionType", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setEnclosedType", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setHandleJettisonEmptyElement", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setHandleJettisonSingleElementArray", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreJPATransient", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnorePublicFields", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreTransientFields", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreUnreadableProperty", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setJavascriptCompliant", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setRootClass", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setSkipJavaIdentifierTransformationInMapKeys", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterDefaultValueProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJavaPropertyNameProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonBeanProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonPropertyNameProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class,Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyExclusion", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyExclusions", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyNameProcessor", "(Class)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jenkins.model.yml b/java/ql/lib/ext/generated/jenkins.model.yml new file mode 100644 index 00000000000..82202559350 --- /dev/null +++ b/java/ql/lib/ext/generated/jenkins.model.yml @@ -0,0 +1,8330 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Jenkins framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["antlr", "ANTLRException", true, "ANTLRException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "BuildCommand$CLICause", true, "CLICause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "getTransportAuthentication2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "getTransportAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "setTransportAuth2", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "setTransportAuth", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "authorization", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "authorization", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "Connection", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "Connection", "(InputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "readByteArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "readUTF", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "writeByteArray", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", true, "getKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", true, "AnnotatedLargeText", "(ByteBuffer,Charset,boolean,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", true, "AnnotatedLargeText", "(File,Charset,boolean,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "getConsoleAnnotator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", true, "cast", "(ConsoleAnnotator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", true, "combine", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(AbstractBuild,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(Computer,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(Run,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleNote", true, "removeNotes", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleNote", true, "removeNotes", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", true, "ExpandableDetailsNote", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", true, "ExpandableDetailsNote", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "HyperlinkNote", true, "HyperlinkNote", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "HyperlinkNote", true, "encodeTo", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "ModelHyperlinkNote", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Item,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Run)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(User)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(User,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "PlainTextConsoleOutputStream", true, "PlainTextConsoleOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor$Solution", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "MemoryUsageMonitor$MemoryGroup", false, "doGraph", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "NullIdDescriptorMonitor", true, "getProblems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "VersionRange", "(VersionRange,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "VersionRange", "(VersionRange,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", true, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", true, "getVersionList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", true, "doTest", "(StaplerRequest,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "InitializerFinder", true, "InitializerFinder", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", true, "getAnnotation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", true, "getMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "TerminatorFinder", true, "TerminatorFinder", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.lifecycle", "RestartNotSupportedException", true, "RestartNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", true, "doDoInstall", "(StaplerRequest,StaplerResponse,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "getLogger", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "LogRecorder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getAutoCompletionCandidates", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getLoggers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "setLoggers", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getLogRecorder", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getRecorders", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "setRecorders", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "WeakLogHandler", false, "WeakLogHandler", "(Handler,Logger)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "LabelAtom", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$And", false, "And", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$And", false, "And", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Iff", false, "Iff", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Iff", false, "Iff", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Implies", false, "Implies", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Implies", false, "Implies", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Not", true, "Not", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Or", false, "Or", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Or", false, "Or", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Paren", true, "Paren", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseLabelIsBusy", false, "BecauseLabelIsBusy", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseLabelIsOffline", false, "BecauseLabelIsOffline", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsBusy", false, "BecauseNodeIsBusy", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsNotAcceptingTasks", false, "BecauseNodeIsNotAcceptingTasks", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsOffline", false, "BecauseNodeIsOffline", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "createNeedsMoreExecutor", "(Localizable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Executables", true, "getParentOf", "(Executable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "FutureImpl", false, "FutureImpl", "(Task)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assign", "(int,ExecutorChunk)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assign", "(int,ExecutorChunk)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assigned", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "toMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "MappingWorksheet", "(BuildableItem,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "MappingWorksheet", "(BuildableItem,List,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "executors", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "works", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "created", "(WaitingItem)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "existing", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "getCreateItem", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "getItem", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getAssignedLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getOwnerTask", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getSameNodeConstraint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getSameNodeConstraint", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getItemOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getOwnerTaskOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getSameNodeConstraintOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getSubTasksOf", "(Task)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "getExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "setExecutable", "(Executable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "setExecutor", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "WorkUnitContext", "(BuildableItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "abort", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "createWorkUnit", "(SubTask)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "createWorkUnit", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "getPrimaryWorkUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "getWorkUnits", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$DependencyChange", false, "DependencyChange", "(AbstractProject,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getBuiltOnStr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getChangeSet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getEnvironments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getHudsonVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getModuleRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getModuleRoots", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getPersistentActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getRootBuild", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getDisabledAdministrativeMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getQueue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "setDisabledAdministrativeMonitors", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "doConfirmRename", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "doConfirmRename", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getConfigFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getDisplayNameOrNull", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getRelativeDisplayNameFrom", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getRelativeNameFromGroup", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "movedTo", "(DirectlyModifiableTopLevelItemGroup,AbstractItem,File)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "movedTo", "(DirectlyModifiableTopLevelItemGroup,AbstractItem,File)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "renameTo", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDisplayNameOrNull", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfBuildInProgress", true, "BecauseOfBuildInProgress", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfDownstreamBuildInProgress", true, "BecauseOfDownstreamBuildInProgress", "(AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfUpstreamBuildInProgress", true, "BecauseOfUpstreamBuildInProgress", "(AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "addTrigger", "(Trigger)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "doWs", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getAssignedLabelString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getCustomWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getRelevantLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getRootProject", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getScm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getScmCheckoutStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getWorkspaceResource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setCustomWorkspace", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setJDK", "(JDK)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setScm", "(SCM)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setScmCheckoutStrategy", "(SCMCheckoutStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addOrReplaceAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addOrReplaceAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getAction", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getAllActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getDynamic", "(String,StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "replaceAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "replaceAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "migrateLegacyPrimaryAllViewLocalizedName", "(List,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Api", true, "Api", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "getValues", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BallColor", false, "anime", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BallColor", false, "noAnime", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String,boolean,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", false, "BuildAuthorizationToken", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", false, "getToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "BuildTimelineWidget", "(RunList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildableItemWithBuildWrappers", true, "asProject", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BuildableItemWithBuildWrappers", true, "getBuildWrappersList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "RemoteCause", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "RemoteCause", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "getAddr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "getNote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "UpstreamCause", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "UpstreamCause", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserCause", true, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "UserIdCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onAddedTo", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onAddedTo", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onLoad", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Cause)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(CauseAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Cause[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "getCauseCounts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "getCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "getChoices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "getChoicesText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "setChoices", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$TerminationRequest", true, "TerminationRequest", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "cliDisconnect", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "cliOffline", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "connect", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "disconnect", "(OfflineCause)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getAllExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getComputerPanelBoxs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getDisplayExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getHeapDump", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getHostName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getOfflineCause", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getOneOffExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getTerminatedBy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getWorkspaceList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "setTemporarilyOffline", "(boolean,OfflineCause)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "all", "(Computer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "getComputer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "setComputer", "(Computer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ComputerSet", false, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "Dependency", "(AbstractProject,AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "Dependency", "(AbstractProject,AbstractProject)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "getDownstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "getUpstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getComputationalData", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getDownstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getDownstreamDependencies", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTopologicallySorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTransitiveDownstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTransitiveUpstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getUpstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getUpstreamDependencies", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "putComputationalData", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,Throwable,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(Throwable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "getFormField", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "find", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "findByDescribableClassName", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "findById", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckMethod", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckMethod", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getGlobalPropertyType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(Klass,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(Klass,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyType", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyTypeOrDie", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toArray", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toList", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toMap", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", true, "apply", "(Object,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", true, "applyType", "(Class,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", true, "add", "(TopLevelItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "createNotReadableVersionOf", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "getHref", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "setIndexFileName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getDataFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getUrls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "reduce", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Environment", true, "buildEnvVars", "(Map)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributingAction", true, "buildEnvVars", "(AbstractBuild,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributingAction", true, "buildEnvironment", "(Run,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributor", true, "buildEnvironmentFor", "(Job,EnvVars,TaskListener)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributor", true, "buildEnvironmentFor", "(Run,EnvVars,TaskListener)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentList", false, "EnvironmentList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "Executor", "(Computer,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "abortResult", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getAsynchronousExecution", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCausesOfInterruption", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentExecutableForApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentWorkUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result,CauseOfInterruption[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result,CauseOfInterruption[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Failure", true, "Failure", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Failure", true, "Failure", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue$FileItemImpl", false, "FileItemImpl", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,FileItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,FileItem)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "doDynamic", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getOriginalFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "BuildPtr", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "BuildPtr", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeItem", false, "RangeItem", "(String,RangeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeItem", false, "RangeItem", "(String,RangeSet)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet$ConverterImpl", false, "ConverterImpl", "(Converter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "add", "(RangeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "getRanges", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "_getUsages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "add", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "add", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "addFor", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getFacetBlockingDeletion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getHashString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getOriginal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getPersistedFacets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getRangeSet", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getRangeSet", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getTimestamp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getUsages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "rename", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FreeStyleBuild", true, "FreeStyleBuild", "(FreeStyleProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleBuild", true, "FreeStyleBuild", "(FreeStyleProject,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(ItemGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(ItemGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(Jenkins,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(Jenkins,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FullDuplexHttpChannel", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,Localizable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getLocalizableDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "max", "(HealthReport,HealthReport)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "max", "(HealthReport,HealthReport)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "min", "(HealthReport,HealthReport)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "min", "(HealthReport,HealthReport)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setIconUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setLocalizibleDescription", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson$CloudList", true, "CloudList", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getComputerListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJob", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJobCaseInsensitive", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJobListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getSlave", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getSlaves", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getAllJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getFullName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getRelativeNameFrom", "(Item)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getRelativeNameFrom", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getShortUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "onLoad", "(ItemGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Item", true, "onLoad", "(ItemGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class,Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItems", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItemsStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItemsStream", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "createProject", "(TopLevelItemDescriptor,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "createTopLevelItem", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "loadChildren", "(ItemGroup,File,Function1)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemVisitor", true, "onItem", "(Item)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ItemVisitor", true, "onItemGroup", "(ItemGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class,Predicate)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "computeRelativeNamesAfterRenaming", "(String,String,String,ItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "computeRelativeNamesAfterRenaming", "(String,String,String,ItemGroup)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getCanonicalName", "(ItemGroup,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getConfigFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getConfigFile", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "load", "(ItemGroup,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "load", "(ItemGroup,File)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "toNameList", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "JDK$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "buildEnvVars", "(Map)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "getBinDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "getJavaHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "addProperty", "(JobProperty)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getAllProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuild", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildByNumber", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildDiscarder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildForCLI", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildHealth", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildHealthReports", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuilds", "(RangeSet)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildsAsMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildsByTimestamp", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getCharacteristicEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getEnvironment", "(Node,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastBuildsOverThreshold", "(int,Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastCompletedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastStableBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastSuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastUnstableBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastUnsuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLogRotator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNearestBuild", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNearestOldBuild", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNewBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getTimeline", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getWidgets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "accept", "(LabelVisitor,Object)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "Label", true, "and", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "and", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getClouds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getExpression", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getSortedNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "iff", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "iff", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "implies", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "implies", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "listAtoms", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "not", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "or", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "or", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "paren", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getIncludeRegex", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getJobFilters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getJobNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "setIncludeRegex", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "setJobNames", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "with", "(Computer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "with", "(Node)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "withQueueLength", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "createTrendChart", "(TimeScale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "doGraph", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ModelObject", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ModifiableViewGroup", true, "addView", "(View)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TrendChart", true, "TrendChart", "(TimeScale,MultiStageTimeSeries[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "MultiStageTimeSeries", "(Localizable,Color,float,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "MultiStageTimeSeries", "(Localizable,Color,float,float)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "createTrendChart", "(TimeScale,MultiStageTimeSeries[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "pick", "(TimeScale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "MyViewsProperty", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "getPrimaryViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "readResolve", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "setPrimaryViewName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "NoFingerprintMatch", true, "NoFingerprintMatch", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Node", true, "canTake", "(BuildableItem)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createComputer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createLauncher", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createPath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getAssignedLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getLabelString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getSelfLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getTemporaryOfflineCause", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getWorkspaceFor", "(TopLevelItem)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "setLabelString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Node", true, "setNodeName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "OneOffExecutor", true, "OneOffExecutor", "(Computer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PaneStatusProperties", true, "toggleCollapsed", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "copyWithDefaultValue", "(ParameterValue)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(CLICommand,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(CLICommand,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest,JSONObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getDefaultParameterValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvVars", "(AbstractBuild,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvVars", "(AbstractBuild,Map)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvironment", "(Run,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List,Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(ParameterValue[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "createUpdated", "(Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "createUpdated", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getAllParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getParameter", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "merge", "(ParametersAction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "merge", "(ParametersAction)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "substitute", "(AbstractBuild,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "ParametersDefinitionProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "ParametersDefinitionProperty", "(ParameterDefinition[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getJobActions", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinition", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinitionNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinitions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "getDefaultValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "getDefaultValueAsSecret", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "setDefaultValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", true, "resolve", "(Job)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PersistenceRoot", true, "getRootDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "addPublisher", "(Publisher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getBuildWrappers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getBuildersList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getPublisher", "(Descriptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getPublishers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "ProxyView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "getProxiedViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "setProxiedViewName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", false, "BlockedItem", "(NotWaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", false, "BlockedItem", "(WaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", false, "BuildableItem", "(NotWaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", false, "BuildableItem", "(WaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$Executable", true, "getParentExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getAssignedLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getAssignedLabelFor", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getCauseOfBlockage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getFuture", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getWhy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$LeftItem", false, "LeftItem", "(Item)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$LeftItem", false, "LeftItem", "(WorkUnitContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubItem", true, "StubItem", "(StubTask)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubTask", true, "StubTask", "(Task)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubTask", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getAffinityKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getSubTasks", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getBuildableItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getBuildableItems", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItem", "(Task)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItem", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItems", "(Task)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getLeftItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getLoadBalancer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getPendingItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getSorter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getUnblockedItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,Action[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,Action[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(AbstractProject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,Action[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,Action[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,List)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "scheduleMaintenance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "setSorter", "(QueueSorter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "wrapWithLock", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "wrapWithLock", "(Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceActivity", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceController", true, "getBlockingActivity", "(ResourceActivity)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "getConflict", "(ResourceList)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "getConflict", "(ResourceList)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "r", "(Resource)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ResourceList", false, "r", "(Resource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "union", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "union", "(ResourceList[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "w", "(Resource)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ResourceList", false, "w", "(Resource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result,Result)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result,Result)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Result", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getDisplayPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getHref", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getLength", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getTreeNodeId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$ArtifactList", false, "getTree", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$RunExecution", true, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Summary", true, "Summary", "(boolean,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "doArtifact", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getArtifactManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getArtifactsDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getCharacteristicEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvironment", "(TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getExternalizableId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getNextBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuildInProgress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuildsOverThreshold", "(int,Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuiltBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousCompletedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousNotFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousSuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getResult", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getTruncatedDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "pickArtifactManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setResult", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "RunMap", "(File,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "RunMap", "(File,Constructor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "getView", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "load", "(Job,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "load", "(Job,Constructor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "getProjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getJobName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getNumber", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getRunId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", true, "createValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", true, "createValue", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", false, "JnlpJar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getRemoteFS", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getRetentionStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setLauncher", "(ComputerLauncher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setNodeDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setRetentionStrategy", "(RetentionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getImageOf", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getImageOf", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StockStatusIcon", false, "StockStatusIcon", "(String,Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StockStatusIcon", false, "StockStatusIcon", "(String,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(PrintStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(PrintStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "getDefaultValue4Build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "getDefaultValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "setDefaultValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskAction", true, "getWorkerThread", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskListener", true, "getLogger", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "ListenerAndText", "(TaskListener,AnnotatedLargeText)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "ListenerAndText", "(TaskListener,AnnotatedLargeText)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "forFile", "(File,TaskAction)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "forMemory", "(TaskAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "TimeZoneProperty", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "getTimeZoneName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "setTimeZoneName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "getIconFilePath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(ItemGroup,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(ItemGroup,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$CompleteBatchJob", false, "CompleteBatchJob", "(List,long,UUID)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$CompleteBatchJob", false, "CompleteBatchJob", "(List,long,UUID)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$ConnectionCheckJob", false, "ConnectionCheckJob", "(UpdateSite)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$ConnectionCheckJob", false, "getStatuses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Failure", true, "Failure", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Failure", true, "getProblemStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$SuccessButRequiresRestart", true, "SuccessButRequiresRestart", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "getPlugin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonDowngradeJob", false, "HudsonDowngradeJob", "(UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonDowngradeJob", false, "HudsonDowngradeJob", "(UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonUpgradeJob", false, "HudsonUpgradeJob", "(UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonUpgradeJob", false, "HudsonUpgradeJob", "(UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob", true, "RestartJenkinsJob", "(UpdateSite)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getCorrelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getError", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getErrorMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "setCorrelationId", "(UUID)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA1", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA256", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA512", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "addJob", "(UpdateCenterJob)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "configure", "(UpdateCenterConfiguration)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "createUpdateCenter", "(UpdateCenterConfiguration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getById", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getCategoryDisplayName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getCoreSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getHudsonJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJob", "(Plugin)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJob", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getSite", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getSites", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Data", false, "getDeprecations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Data", false, "getWarnings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Deprecation", false, "Deprecation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "Entry", "(String,JSONObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha1", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha256", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha512", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "Plugin", "(String,JSONObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "getCategoriesStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "getIncompatibleParentPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "setIncompatibleParentPlugins", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "UpdateSite", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "UpdateSite", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getAvailables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getConnectionCheckUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getDownloadUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getMetadataUrlForDownloadable", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getMetadataUrlForDownloadable", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherOutputStream", false, "CombinedCipherOutputStream", "(OutputStream,Cipher,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherOutputStream", false, "CombinedCipherOutputStream", "(OutputStream,RSAKey,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics", true, "UsageStatistics", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", true, "resolve", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", true, "resolveCanonicalId", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "addProperty", "(UserProperty)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "User", true, "addProperty", "(UserProperty)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String,boolean,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getAllProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getById", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getFullName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getOrCreateByIdOrFullName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getPropertyActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getUserDetailsForImpersonation2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "setFullName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UserIdMapper", true, "init", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople$People", false, "getUsers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople", false, "AsynchPeople", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople", false, "AsynchPeople", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "People", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "People", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$PropertyList", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getLastChange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "create", "(StaplerRequest,StaplerResponse,ViewGroup)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "createViewFromXML", "(String,InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getAsynchPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getColumns", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getJob", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwnerItemGroup", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwnerViewActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getViewUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getItemGroup", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getViewActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getViewsTabBar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", true, "addView", "(View)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", true, "get", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", true, "DiskSpaceMonitor", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", false, "DiskSpace", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", false, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", true, "TemporarySpaceMonitor", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "createJunction", "(File,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "quoteArgument", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "quoteArgumentForCmd", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "ceil", "(Calendar)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "floor", "(Calendar)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "hashify", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTabList", false, "CronTabList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTabList", false, "getValidTimezone", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", true, "StartRuleContext", "(ParserRuleContext,int,CronTab)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CrontabParser", true, "startRule", "(CronTab)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "QueryBuilder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", true, "getBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogParser", true, "parse", "(AbstractBuild,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogParser", true, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "createEmpty", "(AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "createEmpty", "(Run)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getBrowser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "EditType", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "EditType", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "PollingResult", false, "PollingResult", "(SCMRevisionState,SCMRevisionState,Change)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "PollingResult", false, "PollingResult", "(SCMRevisionState,SCMRevisionState,Change)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getEffectiveBrowser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoot", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoot", "(FilePath,AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoots", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoots", "(FilePath,AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "FixedSet", true, "FixedSet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "FixedSet", true, "FixedSet", "(SearchItem[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "Search$Item", true, "Item", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "Search", true, "find", "(SearchIndex,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "Search", true, "find", "(SearchIndex,String,SearchableModelObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "find", "(String,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "find", "(String,List)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "suggest", "(String,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndex)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndex)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndexBuilder)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchItem)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,SearchableModelObject,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,SearchableModelObject,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "addAllAnnotations", "(SearchableModelObject)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "make", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchItem", true, "getSearchName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchItem", true, "getSearchUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SuggestedItem,SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SuggestedItem,SearchItem)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "build", "(SearchableModelObject,SearchItem)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "UnionSearchIndex", "(SearchIndex,SearchIndex)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "UnionSearchIndex", "(SearchIndex,SearchIndex)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "combine", "(SearchIndex[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "getCrumbRequestField", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "getCrumbSalt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "setCrumbRequestField", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "setCrumbSalt", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ACLContext", true, "getPreviousContext2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Authentication,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Throwable,Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Throwable,Authentication,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Authentication,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Throwable,Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Throwable,Authentication,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccountCreationFailedException", true, "AccountCreationFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AuthenticationManagerProxy", true, "setDelegate", "(AuthenticationManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "ChainedServletFilter", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "ChainedServletFilter", "(Filter[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "setFilters", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginService$UnclaimedIdentityException", true, "UnclaimedIdentityException", "(FederatedIdentity)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", true, "addIdentifier", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", true, "getIdentifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonAuthenticationEntryPoint", true, "HudsonAuthenticationEntryPoint", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", false, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", false, "getUsername", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "HudsonPrivateSecurityRealm", "(boolean,boolean,CaptchaSupport)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "createAccount", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "createAccountWithHashedPassword", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "getUser", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(Class,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(String,Class,Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(String,Class,Localizable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "getPermissions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionScope", false, "PermissionScope", "(Class,PermissionScope[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "RememberMeServicesProxy", true, "setDelegate", "(RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "createSecurityComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "getCaptchaSupport", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "getSecurityComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "loadUserByUsername2", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "setCaptchaSupport", "(CaptchaSupport)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL$Entry", false, "Entry", "(Sid,Permission,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL$Entry", false, "Entry", "(Sid,Permission,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL", true, "SparseACL", "(ACL)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL", true, "add", "(Entry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "UserDetailsServiceProxy", true, "setDelegate", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", true, "UserMayOrMayNotExistException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "WhoAmI", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "AbstractCloudComputer", true, "AbstractCloudComputer", "(AbstractCloudSlave)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.slaves", "AbstractCloudComputer", true, "AbstractCloudComputer", "(AbstractCloudSlave)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", false, "CloudState", "(Label,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", false, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "Cloud", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "ComputerLauncherFilter", true, "getCore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$Entry", true, "Entry", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$Entry", true, "Entry", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "EnvironmentVariablesNodeProperty", "(Entry[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "EnvironmentVariablesNodeProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "getEnv", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String,RemotingWorkDirSettings)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String,RemotingWorkDirSettings)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "getWorkDirOptions", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "getWorkDirSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "setWorkDirSettings", "(RemotingWorkDirSettings)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "NodeList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "NodeList", "(Node[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", true, "PlannedNode", "(String,Future,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", true, "PlannedNode", "(String,Future,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "getSnapshot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "NodeProvisioner", "(Label,LoadStatistics)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "NodeProvisioner", "(Label,LoadStatistics)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "getPendingLaunches", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$ByCLI", true, "ByCLI", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", true, "ChannelTermination", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$SimpleOfflineCause", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$UserCause", true, "UserCause", "(User,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$UserCause", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause", true, "create", "(Localizable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", true, "SimpleScheduledRetentionStrategy", "(String,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", true, "getStartTimeSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "SlaveComputer", "(Slave)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "SlaveComputer", "(Slave)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "doJenkinsAgentJnlp", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "doSlaveAgentJnlp", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getAbsoluteRemoteFs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getAbsoluteRemotePath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getDelegatedLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getJnlpJars", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "openLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "setChannel", "(Channel,OutputStream,Listener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Entry", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", true, "createDummyLease", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", true, "createLinkedDummyLease", "(FilePath,Lease)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "record", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "record", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "tempDir", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks._maven", "MavenConsoleAnnotator", true, "MavenConsoleAnnotator", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean,Boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean,Boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "getArtifacts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "setExcludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BatchFile", true, "BatchFile", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BatchFile", true, "setConfiguredLocalRules", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep$PublisherList", false, "addNotifier", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep$PublisherList", false, "addRecorder", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep", true, "getProjectActions", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildStepDescriptor", true, "filter", "(List,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(Collection,Result)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(Collection,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(List,Result)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(List,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "getChildProjectsValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "getThreshold", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "onJobRenamed", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "decorateLauncher", "(AbstractBuild,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "decorateLogger", "(AbstractBuild,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "setUp", "(AbstractBuild,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "setUp", "(Build,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "buildCommandLine", "(FilePath)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "buildCommandLine", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "createScriptFile", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "getCommand", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "getConfiguredLocalRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "FingerprintAction", "(AbstractBuild,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "FingerprintAction", "(Run,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getFingerprints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getRecords", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "Fingerprinter", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "Fingerprinter", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "getTargets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "setExcludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Exception[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Exception[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", false, "getInstallations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "getHomeDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "getMavenHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstaller", true, "MavenInstaller", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getGlobalSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getTargets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Publisher$DescriptorExtensionListImpl", false, "DescriptorExtensionListImpl", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShell", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShellOrDefault", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShellOrDefault", "(VirtualChannel)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "setShell", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell", true, "Shell", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell", true, "setConfiguredLocalRules", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getCommand", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getCommandCall", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getToolHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", true, "for_", "(List,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", true, "for_", "(List,Object)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolDescriptor", true, "getInstallations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolDescriptor", true, "setInstallations", "(ToolInstallation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "buildEnvVars", "(EnvVars)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(Node,EnvVars,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(Node,EnvVars,TaskListener)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "performInstallation", "(ToolInstallation,Node,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "performInstallation", "(ToolInstallation,Node,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$DescriptorImpl", true, "getKey", "(ToolInstallation)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "ToolLocationNodeProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "ToolLocationNodeProperty", "(ToolLocation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getHome", "(ToolInstallation)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getLocations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getToolHome", "(Node,ToolInstallation,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", true, "getToolHome", "(Node,ToolInstallation,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "getSubdir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "BuildAction", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "BuildAction", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "getPollingLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", true, "Runner", "(Action[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", true, "SCMTriggerCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "SCMTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "SCMTrigger", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "getScmpoll_spec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", true, "getFullJobName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", true, "getErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "TimerTrigger", true, "TimerTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "Trigger", true, "getSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "Trigger", true, "start", "(Item,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", true, "create", "(OutputStream)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", true, "createZipWithoutSymlink", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.io", "ReopenableFileOutputStream", true, "ReopenableFileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "ReopenableRotatingFileOutputStream", true, "ReopenableRotatingFileOutputStream", "(File,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "RewindableFileOutputStream", true, "RewindableFileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "RewindableRotatingFileOutputStream", true, "RewindableRotatingFileOutputStream", "(File,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "openReadonly", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "openReadonly", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "SHELLEXECUTEINFO$DUMMYUNIONNAME_union", true, "DUMMYUNIONNAME_union", "(Pointer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "WinIOException", true, "WinIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "WinIOException", true, "WinIOException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.xstream", "MapperDelegate", true, "MapperDelegate", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AWTProblem", true, "AWTProblem", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider$Message", false, "cast", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", true, "get", "(Message,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "ArgumentListBuilder", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Iterable)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Object,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addTokenized", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addTokenized", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "prepend", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "prepend", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toCommandArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toStringWithQuote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "getTemporaryFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "getTemporaryPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "BootFailure", true, "getBootFailureFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "getBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "readFrom", "(InputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "readFrom", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "NumberOnlyBuildLabel", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "NumberOnlyBuildLabel", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ChunkedInputStream", true, "ChunkedInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", true, "ChunkedOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", true, "ChunkedOutputStream", "(OutputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClassLoaderSanityThreadFactory", true, "ClassLoaderSanityThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "addAll", "(FilePath,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "addJarOf", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ComboBoxModel", true, "ComboBoxModel", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ComboBoxModel", true, "ComboBoxModel", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompoundEnumeration", true, "CompoundEnumeration", "(Enumeration[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompoundEnumeration", true, "CompoundEnumeration", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompressedFile", true, "CompressedFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "ConsistentHash", "(Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "ConsistentHash", "(Hash,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "add", "(Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "lookup", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "lookup", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "remove", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "CopyOnWriteList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "addAll", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "addAllTo", "(Collection)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "getView", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(CopyOnWriteList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "toArray", "(Object[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "toArray", "(Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Hash", false, "Hash", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Map,Comparator)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Map,Comparator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap", true, "replaceBy", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector$CycleDetectedException", false, "CycleDetectedException", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector", true, "getSorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector", true, "run", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DaemonThreadFactory", true, "DaemonThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DataSetBuilder", false, "add", "(Number,Comparable,Comparable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DataSetBuilder", false, "add", "(Number,Comparable,Comparable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DecodingStream", true, "DecodingStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Owner)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Saveable,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "get", "(Descriptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "setOwner", "(Owner)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toArray", "(Describable[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toArray", "(Describable[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescriptorList", false, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescriptorList", false, "findByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Filter", true, "Filter", "(FileFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", true, "getCollidingId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DualOutputStream", true, "DualOutputStream", "(OutputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DualOutputStream", true, "DualOutputStream", "(OutputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "EditDistance", true, "findNearest", "(String,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "EditDistance", true, "findNearest", "(String,String[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "EncodingStream", true, "EncodingStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ErrorObject", true, "getStackTraceString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ExceptionCatchingThreadFactory", true, "ExceptionCatchingThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FileVisitor", true, "with", "(FileFilter)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "FlushProofOutputStream", true, "FlushProofOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ForkOutputStream", true, "ForkOutputStream", "(OutputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ForkOutputStream", true, "ForkOutputStream", "(OutputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Executable", true, "Executable", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Executable", true, "Executable", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$HudsonURL", true, "HudsonURL", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$HudsonURL", true, "HudsonURL", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFilePath", true, "WorkspaceFilePath", "(StaplerRequest,StaplerResponse,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFilePath", true, "WorkspaceFilePath", "(StaplerRequest,StaplerResponse,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "errorWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "warningWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "withSelectionCleared", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "CheckMethod", "(Descriptor,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "getDependsOn", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "toCheckUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "toStemUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "aggregate", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "errorWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "okWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "warningWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HeadBufferingStream", true, "getSideBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONArray)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONArray)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONObject)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "okJSON", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "okJSON", "(JSONObject)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HudsonFailedToLoad", true, "HudsonFailedToLoad", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "absolutize", "(File,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "absolutize", "(File,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,Writer,String)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copyLarge", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copyLarge", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "lineIterator", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "lineIterator", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readFirstLine", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "skip", "(InputStream,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(Reader,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toInputStream", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toInputStream", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(byte[],String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(String,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(StringBuffer,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],Writer,String)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(char[],Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,OutputStream)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,OutputStream,String)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,Writer)", "", "Argument[0].Element", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,Writer)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "InsufficientPermissionDetected", true, "InsufficientPermissionDetected", "(SecurityException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators$DuplicateFilterIterator", false, "DuplicateFilterIterator", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators$DuplicateFilterIterator", false, "DuplicateFilterIterator", "(Iterator)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "cast", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "cast", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "removeDups", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "removeNull", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "sequence", "(Iterator[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "subType", "(Iterator,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "args", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "classpath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "debug", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "launch", "(Launcher)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(FilePath)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "toFullArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "vmopts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JenkinsReloadFailed", true, "JenkinsReloadFailed", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "LineEndingConversion", true, "convertEOL", "(String,EOLType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "ListBoxModel", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "ListBoxModel", "(Option[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(ModelObject,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(ModelObject,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "values", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "MaskingClassLoader", "(ClassLoader,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "MaskingClassLoader", "(ClassLoader,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", true, "getFileItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "NamingThreadFactory", false, "NamingThreadFactory", "(ThreadFactory,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NamingThreadFactory", false, "NamingThreadFactory", "(ThreadFactory,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NoHomeDir", true, "NoHomeDir", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NoTempDir", true, "NoTempDir", "(IOException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "OneShotEvent", false, "OneShotEvent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PackedMap", false, "of", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "PersistedList", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "addAllTo", "(Collection)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "setOwner", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "toList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessKillingVeto$VetoCause", true, "VetoCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ProcessKillingVeto$VetoCause", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTree", true, "get", "(Process)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTree", true, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", true, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", true, "getEnvironmentVariables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QueryParameterMap", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QueryParameterMap", true, "getAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "quote", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "unquote", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "Parameter", "(MethodInfo,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "annotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "genericType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils", true, "getParameters", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", true, "HeapDump", "(AccessControlled,VirtualChannel)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", true, "HeapDump", "(AccessControlled,VirtualChannel)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withAttempts", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDelay", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptionListener", "(BiFunction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptionListener", "(BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptions", "(Class[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptions", "(Class[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "RobustReflectionConverter", "(Mapper,ReflectionProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "RobustReflectionConverter", "(Mapper,ReflectionProvider)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "doUnmarshal", "(Object,HierarchicalStreamReader,UnmarshallingContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "RunList", "(Job)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "byTimestamp", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "completedOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "failureOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "filter", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "filter", "(Predicate)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "RunList", true, "fromRuns", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "limit", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "newBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "node", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "overThresholdOnly", "(Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "regressionOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Scrambler", true, "descramble", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Scrambler", true, "scramble", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "decrypt", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "fromString", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "getEncryptedValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "getPlainText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "toString", "(Secret)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SecretRewriter", true, "rewriteRecursive", "(File,TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "SequentialExecutionQueue", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "getExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "getInProgress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "setExecutors", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamResource", true, "StreamResource", "(String,InputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(PrintStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TagCloud$Entry", false, "Entry", "(Object,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TextFile", true, "TextFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TextFile", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$ByMap", false, "ByMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$Union", false, "Union", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$Union", false, "Union", "(VariableResolver[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "addCompatibilityAlias", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "getMapperInjectionPoint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "setMapper", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.views", "MyViewsTabBar", true, "sort", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.views", "ViewJobFilter", true, "filter", "(List,List,View)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.views", "ViewsTabBar", true, "sort", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "doAjax", "(StaplerRequest,StaplerResponse,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getFirstTransientBuildKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getHistoryPageFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getNextBuildNumberToFetch", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getRenderList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "setNextBuildNumberToFetch", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "AbortException", true, "AbortException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "AbstractMarkupText", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "BulkChange", true, "BulkChange", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ClassicPluginStrategy", true, "ClassicPluginStrategy", "(PluginManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "CloseProofOutputStream", true, "CloseProofOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "DependencyRunner", true, "DependencyRunner", "(ProjectRunnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "createDescriptorList", "(Hudson,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "createDescriptorList", "(Jenkins,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "find", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "findByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(EnvVars)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "addLine", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "expand", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "expand", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "get", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "get", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "override", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "override", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "overrideAll", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "EnvVars", true, "overrideAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "overrideExpandingAll", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "EnvVars", true, "overrideExpandingAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "putIfNotNull", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "putIfNotNull", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object,Extension)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "getInstance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionFinder$GuiceFinder", true, "getContainer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "addListener", "(ExtensionListListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "create", "(Hudson,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "create", "(Jenkins,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "getComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath$ExplicitlySpecifiedDirScanner", false, "ExplicitlySpecifiedDirScanner", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath$TarCompression", true, "extract", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(FilePath,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(FilePath,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(VirtualChannel,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(VirtualChannel,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "absolutize", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "act", "(FileCallable)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "asCallableWith", "(FileCallable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "child", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createLauncher", "(TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createLauncher", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTempDir", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTempFile", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTextTempFile", "(String,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTextTempFile", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "digest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getBaseName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getRemote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "ignoringSymlinks", "(FileVisitor,String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "readLink", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "readToString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "sibling", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toVirtualFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,int,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "withSuffix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "withSuffix", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getBaseUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getNextBuildUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getPreviousBuildUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$ThreadGroupMap", true, "getThreadGroup", "(ThreadInfo)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "addSuffix", "(int,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "addSuffix", "(int,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendSpaceIfNotNull", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "breakableString", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "calcCheckUrl", "(Map,String,Object,String)", "", "Argument[2]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson", "Functions", true, "calcCheckUrl", "(Map,String,Object,String)", "", "Argument[3]", "Argument[2]", "taint", "df-generated"] + - ["hudson", "Functions", true, "capitalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "decompose", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "defaulted", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "defaulted", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "dumpThreadInfo", "(ThreadInfo,ThreadGroupMap)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "extractPluginNameFromIconSrc", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filter", "(SortedMap,String,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filterDescriptors", "(Object,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filterExcludingFrom", "(SortedMap,String,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getActionUrl", "(String,Action)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[2]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCookie", "(HttpServletRequest,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getDiffString2", "(String,int,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getDiffString2", "(String,int,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getNearestAncestorUrl", "(StaplerRequest,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getPasswordValue", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getProjectListString", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeDisplayNameFrom", "(Item,ItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeNameFrom", "(Item,ItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeNameFrom", "(Item,ItemGroup,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getViewResource", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "ifThenElse", "(boolean,Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "ifThenElse", "(boolean,Object,Object)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "joinPath", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "prepend", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "prepend", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "printThrowable", "(Throwable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "rawHtml", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "reverse", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "singletonList", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "subList", "(List,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "tryGetIconPath", "(String,JellyContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "validateIconSize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "xmlUnescape", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "DecoratedLauncher", "(Launcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "getInner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DummyLauncher", true, "DummyLauncher", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener,VirtualChannel)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener,VirtualChannel)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "(EnvVarsFilterableBuilder)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "(EnvVarsFilterableBuilder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmdAsSingleString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(ArgumentListBuilder)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(ArgumentListBuilder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(File,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(File,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(List)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "copy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "masks", "(boolean[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(FilePath)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "quiet", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "readStderr", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "readStdout", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "start", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "(OutputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "(InputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(OutputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(TaskListener)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "writeStdin", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher$ProcImpl", false, "ProcImpl", "(RemoteProcess)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "RemoteLauncher", "(TaskListener,VirtualChannel,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "RemoteLauncher", "(TaskListener,VirtualChannel,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateByEnv", "(EnvVars)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateByPrefix", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateFor", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(ProcStarter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(ServletContext,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(ServletContext,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "set", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "setIfNull", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "setIfNull", "(Class,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "MarkupText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "toString", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "PermalinkList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "findNearest", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Plugin", true, "getWrapper", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginFirstClassLoader", true, "getURLs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(PluginWrapper,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(PluginWrapper,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "getExceptionString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginCycleDependenciesMonitor", false, "getPluginsWithCycle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "addPluginToUpdate", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "getPluginsToBeUpdated", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "ifPluginOlderThenReport", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$UberClassLoader", false, "UberClassLoader", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "createDefault", "(Jenkins)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "disablePlugins", "(PluginDisableStrategy,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "disablePlugins", "(PluginDisableStrategy,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "dynamicLoad", "(File,boolean,List)", "", "Argument[this]", "Argument[2].Element", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "dynamicLoad", "(File,boolean,List)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getFailedPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getLastErrorCheckUpdateCenters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugin", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPluginStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugins", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getWorkDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "whichPlugin", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "createPluginWrapper", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "createPluginWrapper", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "getShortName", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$Dependency", false, "Dependency", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$Dependency", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String,PluginDisableStatus,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String,PluginDisableStatus,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "addDependentDisableStatus", "(PluginDisableResult)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getDependentsDisableStatus", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getPlugin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "setMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", false, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", false, "getPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[6].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[7].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "disable", "(PluginDisableStrategy)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getBackupFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDerivedDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getLongName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getMandatoryDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getMandatoryDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getManifest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOriginalDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setDependants", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setDependents", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setOptionalDependents", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setPlugin", "(Plugin)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,Map,OutputStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,Map,OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,String[],OutputStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,String[],OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],Map,InputStream,OutputStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,File)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$RemoteProc", false, "RemoteProc", "(Future)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStderr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStdin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStdout", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getEncryptedPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getNoProxyHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getSecretPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getTestUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setNoProxyHost", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setSecretPassword", "(Secret)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setTestUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setUserName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "StructuredForm", true, "get", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "changeExtension", "(File,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "combine", "(long,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStream", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStream", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStreamAndClose", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStreamAndClose", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "createDirectories", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "encodeRFC2396", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "ensureEndsWith", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "ensureEndsWith", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fileToPath", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixEmpty", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixEmptyAndTrim", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fullEncode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "getFileName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "intern", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "mapToEnv", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "nullify", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "rawEncode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "removeTrailingSlash", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "singleQuote", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "toHexString", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "tokenize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "wrapToErrorSpan", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "WebAppMain$FileAndDescription", true, "FileAndDescription", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "WebAppMain$FileAndDescription", true, "FileAndDescription", "(File,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "getXStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "replaceIfNotAtTopLevel", "(Object,Supplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "HsErrPidFile", "(HsErrPidList,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "HsErrPidFile", "(HsErrPidList,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidList", true, "getFiles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", true, "getStorage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", true, "setStorage", "(FingerprintStorage)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "InstallState", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApiData", true, "getMonitorsList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", true, "filterNonSecurityAdministrativeMonitors", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", true, "filterSecurityAdministrativeMonitors", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AsynchronousAdministrativeMonitor", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "Badge", "(String,String,Severity)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "Badge", "(String,String,Severity)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Categories", true, "getItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Categories", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[5].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.labels", "LabelAutoCompleteSeeder", true, "LabelAutoCompleteSeeder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.labels", "LabelAutoCompleteSeeder", true, "getSeeds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "getLoadedBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "put", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "put", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "updateBaseDir", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference$HolderFactory", true, "make", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "BuildReference", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "BuildReference", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "createReference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "getNextBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "getPreviousBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "_getRuns", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "createHistoryWidget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "getRunMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "completed", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "setExecutorWithoutCompleting", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.queue", "CompositeCauseOfBlockage", true, "CompositeCauseOfBlockage", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ArtifactManager", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ArtifactManagerConfiguration", true, "getArtifactManagerFactories", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "BlockedBecauseOfBuildInProgress", true, "BlockedBecauseOfBuildInProgress", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarder$ConverterImpl", true, "ConverterImpl", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarderProperty", true, "BuildDiscarderProperty", "(BuildDiscarder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarderProperty", true, "getStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "UserInterruption", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "UserInterruption", "(User)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUserOrNull", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Configuration", true, "getStringConfigParameter", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "FingerprintFacet", true, "_setOwner", "(Fingerprint)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "FingerprintFacet", true, "getFingerprint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderConfiguration", true, "getConfiguredBuildDiscarders", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "IdStrategy", true, "idFromFilename", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "IdStrategy", true, "keyFor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "InterruptedBuildAction", true, "InterruptedBuildAction", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "InterruptedBuildAction", true, "getCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "InvalidBuildsDir", true, "InvalidBuildsDir", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins$CloudList", true, "CloudList", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins$CloudList", true, "getByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "_getFingerprint", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "createProject", "(TopLevelItemDescriptor,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doJnlpJars", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doQuietDown", "(boolean,int,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doUserContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getActiveAdministrativeMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAdjuncts", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAdministrativeMonitor", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAgentProtocols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAllThreadDumps", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAsynchPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAuthorizationStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getBuildDirFor", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getBuildDirFor", "(Job)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getCloud", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getComputer", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getComputers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getCrumbIssuer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDependencyGraph", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptorList", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptorOrDie", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getExtensionList", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getExtensionList", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFingerprint", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFingerprintMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFutureDependencyGraph", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getGlobalNodeProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getHeapDump", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,Item)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,Item)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,ItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItemMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJDK", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJDKs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJnlpJars", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtoms", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLog", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getMarkupFormatter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getMyViewsTabBar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getNodesObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getPluginManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getProjectNamingStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getProxy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getQuietDownReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getRawBuildsDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getRawWorkspaceDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSCMListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSecretKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSecurityRealm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSetupWizard", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSystemMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getTcpSlaveAgentListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getTopLevelItemNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getUpdateCenter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getUser", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getWidgets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "putItem", "(TopLevelItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "rebuildDependencyGraphAsync", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setAuthorizationStrategy", "(AuthorizationStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setCrumbIssuer", "(CrumbIssuer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setInstallState", "(InstallState)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setJDKs", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setLog", "(LogRecorderManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setMarkupFormatter", "(MarkupFormatter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setMyViewsTabBar", "(MyViewsTabBar)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setPrimaryView", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setProjectNamingStrategy", "(ProjectNamingStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setProxy", "(ProxyConfiguration)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setRawBuildsDir", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setSecurityRealm", "(SecurityRealm)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setSystemMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setViewsTabBar", "(ViewsTabBar)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "getAdminAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "setAdminAddress", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Action)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(MenuItem)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(MenuItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addAll", "(Collection)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addHeader", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addSeparator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "from", "(ModelObjectWithContextMenu,StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "from", "(ModelObjectWithContextMenu,StaplerRequest,StaplerResponse,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "MenuItem", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "getIconXml", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withContextRelativeUrl", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withContextRelativeUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withDisplayName", "(ModelObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withDisplayName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(BallColor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIconClass", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withStockIcon", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withStockIcon", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withUrl", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", true, "createProject", "(TopLevelItemDescriptor,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "addNode", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", true, "extendSearchIndex", "(SearchIndexBuilder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", true, "scheduleBuild2", "(Job,int,Action[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "getNamePattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "RunAction2", true, "onAttached", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "RunAction2", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "SimpleGlobalBuildDiscarderStrategy", true, "SimpleGlobalBuildDiscarderStrategy", "(BuildDiscarder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "SimpleGlobalBuildDiscarderStrategy", true, "getDiscarder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "StandardArtifactManager", true, "StandardArtifactManager", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathGlobalSettingsProvider", true, "FilePathGlobalSettingsProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathGlobalSettingsProvider", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathSettingsProvider", true, "FilePathSettingsProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathSettingsProvider", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "getGlobalSettingsProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "getSettingsProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "setGlobalSettingsProvider", "(GlobalSettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "setSettingsProvider", "(SettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsFilePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsFilePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsRemotePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsRemotePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsFilePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsFilePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsRemotePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsRemotePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator$Item", true, "Item", "(ArrayType,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", true, "getInstance", "(boolean,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", true, "getOverrides", "(ArrayType)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", true, "match", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", true, "validate", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(RegexValidator,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],long)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "getShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "getSplitWhen", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", true, "configLines", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", true, "getLastUseDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", true, "getTokenUuid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "findTokenStatsById", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "findTokenStatsById", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "load", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "load", "(User)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "updateUsageForId", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "updateUsageForId", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNew", "(String,HashValue)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNew", "(String,HashValue)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNewFromLegacy", "(HashValue,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getCreationDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getUuid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "rename", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "findMatchingToken", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "getLegacyToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "getTokenListSortedByName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "revokeToken", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", true, "getLegacyStatsOf", "(User,HashedToken)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "TokenUuidAndPlainValue", true, "TokenUuidAndPlainValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "TokenUuidAndPlainValue", true, "TokenUuidAndPlainValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty", true, "getSeed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "addBlacklistSignature", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "addBlacklistSignature", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "remove", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "removeBlacklistSignature", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$TokenInfoAndStats", true, "TokenInfoAndStats", "(HashedToken,SingleTokenStats)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$TokenInfoAndStats", true, "TokenInfoAndStats", "(HashedToken,SingleTokenStats)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", true, "getTokenStats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", true, "getTokenStore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "BasicApiTokenHelper", true, "isConnectingUsingApiToken", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "BasicHeaderProcessor", true, "setAuthenticationEntryPoint", "(AuthenticationEntryPoint)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "BasicHeaderProcessor", true, "setRememberMeServices", "(RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ConfidentialKey", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", true, "CryptoConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", true, "CryptoConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "DefaultConfidentialStore", true, "DefaultConfidentialStore", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(Class,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "HexStringConfidentialKey", "(Class,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "HexStringConfidentialKey", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingExecutorService", false, "ImpersonatingExecutorService", "(ExecutorService,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingExecutorService", false, "ImpersonatingExecutorService", "(ExecutorService,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingScheduledExecutorService", false, "ImpersonatingScheduledExecutorService", "(ScheduledExecutorService,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingScheduledExecutorService", false, "ImpersonatingScheduledExecutorService", "(ScheduledExecutorService,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingUserDetailsService2", true, "ImpersonatingUserDetailsService2", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingUserDetailsService", true, "ImpersonatingUserDetailsService", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "NonSerializableSecurityContext", true, "NonSerializableSecurityContext", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "NonSerializableSecurityContext", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorConfiguration", true, "getAuthenticators", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "RSAConfidentialKey", true, "getPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", true, "RSADigitalSignatureConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", true, "RSADigitalSignatureConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", false, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", false, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getDynamic", "(String,StaplerRequest,StaplerResponse)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getRedirectUrl", "(Token,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getToken", "(DirectoryBrowserSupport,StaplerRequest)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "SecurityContextExecutorService", true, "SecurityContextExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", true, "getIgnoredWarnings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", true, "setIgnoredWarnings", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "UserDetailsCache", false, "getCached", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "UserDetailsCache", false, "loadUserByUsername", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "IOHubProvider", true, "getHub", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "NioChannelSelector", true, "getHub", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "RemotingWorkDirSettings", "(boolean,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "RemotingWorkDirSettings", "(boolean,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "getInternalDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "getWorkDirPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "toCommandLineArgs", "(SlaveComputer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "toCommandLineString", "(SlaveComputer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", true, "getVariables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", true, "setVariables", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "EnvVarsFilterException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "getRule", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withRule", "(EnvVarsFilterRule)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withRule", "(EnvVarsFilterRule)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withVariable", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withVariable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "EnvVarsFilterRuleContext", "(Launcher,TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "EnvVarsFilterRuleContext", "(Launcher,TaskListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "getTaskListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", true, "EnvVarsFilterRuleWrapper", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", true, "createRuleWrapper", "(Run,Object,Launcher,List)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterableBuilder", true, "buildEnvVarsFilterRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "env", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "env", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "getDisposer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "getEnv", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "setDisposer", "(Disposer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.telemetry", "Correlator", true, "getCorrelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String,Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "getThreshold", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "getUpstreamProjects", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "setThreshold", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem$SCMTriggerItems", true, "asSCMTriggerItem", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem$SCMTriggerItems", true, "resolveMultiScmIfConfigured", "(SCM)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", true, "asItem", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", true, "getSCMs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "TriggeredItem", true, "getTriggers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.antlr", "JenkinsANTLRErrorListener", true, "JenkinsANTLRErrorListener", "(Supplier)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "bind", "(String,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "getBindings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,IOException[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,IOException[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "getExceptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "FileBoolean", true, "FileBoolean", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "FileBoolean", true, "FileBoolean", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover$RetryStrategy", true, "failureMessage", "(Path,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover", true, "newFilteredRobustRemover", "(PathChecker,int,boolean,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover", true, "newRemoverWithStrategy", "(RetryStrategy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xml", "FilteredFunctionContext", true, "FilteredFunctionContext", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM$WriterImpl", true, "getOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttribute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttributeMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getChildren", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getTagName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "AntClassLoader", true, "addPathFiles", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(Callable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(ExecutorService,Callable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(ExecutorService,Callable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "submit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "BuildListenerAdapter", false, "BuildListenerAdapter", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "BuildListenerAdapter", false, "wrap", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "ContextResettingExecutorService", true, "ContextResettingExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "ErrorLoggingExecutorService", true, "ErrorLoggingExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "JSONSignatureValidator", true, "JSONSignatureValidator", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", true, "internInPlace", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "NonLocalizable", true, "NonLocalizable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "NonLocalizable", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "ServerTcpPort", true, "ServerTcpPort", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "SystemProperties", true, "getString", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "SystemProperties", true, "getString", "(String,String,Level)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "toString", "(TreeString)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", true, "intern", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", true, "intern", "(TreeString)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "child", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "forFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "forFilePath", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "listOnlyDescendants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "readLink", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "toURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", true, "getProviderSession", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", true, "onWebSocketConnect", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", true, "HistoryPageEntry", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", true, "getEntry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", true, "setSearchString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "RunListProgressiveRendering", true, "setBuilds", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "ExtensionRefreshException", true, "ExtensionRefreshException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "MissingDependencyException", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "MissingDependencyException", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "getMissingDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "getPluginShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins", "RestartRequiredException", true, "RestartRequiredException", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "RestartRequiredException", true, "RestartRequiredException", "(Localizable,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "GrantedAuthoritySid", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "getGrantedAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "PrincipalSid", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "getPrincipal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", true, "getAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", true, "setAuthentication", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", true, "AnonymousAuthenticationToken", "(AnonymousAuthenticationToken)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers", "AbstractAuthenticationToken", true, "setDetails", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", true, "UsernamePasswordAuthenticationToken", "(UsernamePasswordAuthenticationToken)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", true, "fromSpring", "(RememberMeServices)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[6].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "fromSpring", "(UserDetails)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "fromSpringPrincipal", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getAuthorities", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getUsername", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "toSpringPrincipal", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", true, "loadUserByUsername", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", true, "UsernameNotFoundException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", true, "AccountExpiredException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "AcegiSecurityException", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "fromSpring", "(Authentication)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "getAuthorities", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "getDetails", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "fromSpring", "(AuthenticationException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "getAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "getExtraInformation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "setAuthentication", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", true, "BadCredentialsException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", true, "CredentialsExpiredException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "DisabledException", true, "DisabledException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", true, "getAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthorityImpl", true, "GrantedAuthorityImpl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthorityImpl", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "LockedException", true, "LockedException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getClassSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getNormalizedSelector", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(JellyContext)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getStyle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedCSSSelector", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconNameClass", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconSizeClass", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "addIcon", "(Icon)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "addIcon", "(Icon)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getCoreIcons", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByClassSpec", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByNormalizedCSSSelector", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByUrl", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconType", false, "toQualifiedUrl", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconType", false, "toQualifiedUrl", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "WeatherIcon", true, "WeatherIcon", "(String,String,Status)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "WeatherIcon", true, "WeatherIcon", "(String,String,Status)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getHtmlTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getPluginName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getRaw", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withClasses", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withClasses", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withHtmlTooltip", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withHtmlTooltip", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withId", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withPluginName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withPluginName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withRaw", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withRaw", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTitle", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTitle", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTooltip", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTooltip", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getHtmlTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getPluginName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["antlr", "ANTLRException", "ANTLRException", "(String,Throwable)", "summary", "df-generated"] + - ["antlr", "ANTLRException", "ANTLRException", "(Throwable)", "summary", "df-generated"] + - ["executable", "Main", "whoAmI", "(File)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_BadAuth", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_NoSuchFileExists", "(Object)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_NoURL", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_Usage", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_BadAuth", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_NoSuchFileExists", "(Object)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_NoURL", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_Usage", "()", "summary", "df-generated"] + - ["hudson.cli.handlers", "AbstractItemOptionHandler", "AbstractItemOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "AbstractProjectOptionHandler", "AbstractProjectOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "JobOptionHandler", "JobOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "NodeOptionHandler", "NodeOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ParameterizedJobOptionHandler", "ParameterizedJobOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "TopLevelItemOptionHandler", "TopLevelItemOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ViewOptionHandler", "ViewOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ViewOptionHandler", "getView", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "_main", "(String[])", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(File)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(File,String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(String,String)", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "doCommand", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "doWs", "()", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "isWebSocketSupported", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "all", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "checkChannel", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "clone", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getCurrent", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getLongDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getName", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getSingleLineSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getUsage", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "setClientCharset", "(Charset)", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "all", "()", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "authenticate", "(String,Channel,Connection)", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "supportsProtocol", "(String)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "Connection", "(Socket)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "close", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "diffieHellman", "(boolean)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "diffieHellman", "(boolean,int)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "encryptConnection", "(SecretKey,String)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "fold", "(byte[],int)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "proveIdentity", "(byte[],KeyPair)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readBoolean", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readKey", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readObject", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "verifyIdentity", "(byte[])", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeBoolean", "(boolean)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeKey", "(Key)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeObject", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeUTF", "(String)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "AddJobToViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildConfigNotSaved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildDisabled", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildUnknownReasons", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CancelQuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ClearQueueCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CliProtocol2_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CliProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ConnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ConsoleCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CopyJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteBuildsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_NoSuchStrategy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_PrintUsageSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_StatusMessage", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisconnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_MissingDependencies", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GroovyCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GroovyshCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "HelpCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingFromUpdateCenter", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromLocalFile", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromStdin", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromUrl", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NoUpdateCenterDefined", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NoUpdateDataRetrieved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NotAValidSourceName", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListChangesCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListJobsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListPluginsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "OfflineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "OnlineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "QuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ReloadConfigurationCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ReloadJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "RemoveJobFromViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SessionIdCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SetBuildDescriptionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SetBuildDisplayNameCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "VersionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WaitNodeOfflineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WaitNodeOnlineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WhoAmICommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_AddJobToViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildConfigNotSaved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildDisabled", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildUnknownReasons", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CancelQuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ClearQueueCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CliProtocol2_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CliProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ConnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ConsoleCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CopyJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteBuildsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_NoSuchStrategy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_PrintUsageSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_StatusMessage", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisconnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_MissingDependencies", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GroovyCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GroovyshCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_HelpCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingFromUpdateCenter", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromLocalFile", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromStdin", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromUrl", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NoUpdateCenterDefined", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NoUpdateDataRetrieved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NotAValidSourceName", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListChangesCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListJobsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListPluginsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_OfflineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_OnlineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_QuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ReloadConfigurationCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ReloadJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_RemoveJobFromViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SessionIdCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SetBuildDescriptionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SetBuildDisplayNameCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_VersionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WaitNodeOfflineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WaitNodeOnlineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WhoAmICommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "hasKeys", "()", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "loadKey", "(File,String)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "loadKey", "(String,String)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "readFrom", "(File)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "readFromDefaultLocations", "()", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "doProgressiveHtml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "doProgressiveText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "writeHtmlTo", "(long,Writer)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "writeRawLogTo", "(long,OutputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "doScriptJs", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "doStyleCss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "hasScript", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "hasStylesheet", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "_for", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "annotate", "(Object,MarkupText)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "initial", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "doScriptJs", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "doStyleCss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "hasScript", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "hasStylesheet", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "newInstance", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "type", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "annotate", "(Object,MarkupText,int)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encode", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encodeTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encodeTo", "(Writer)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "findPreamble", "(byte[],int,int)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "readFrom", "(DataInputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "skip", "(DataInputStream)", "summary", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", "encodeTo", "(String,String)", "summary", "df-generated"] + - ["hudson.console", "LineTransformationOutputStream", "forceEol", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor$Solution", "all", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "get", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "getSolution", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "getSolutions", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "HsErrPidList_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "HudsonHomeDiskUsageMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "MemoryUsageMonitor_TOTAL", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "MemoryUsageMonitor_USED", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "NullIdDescriptorMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_Description", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_OldDataTooltip", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "ReverseProxySetupMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "TooManyJobsButNoView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_HsErrPidList_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_HudsonHomeDiskUsageMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_MemoryUsageMonitor_TOTAL", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_MemoryUsageMonitor_USED", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_NullIdDescriptorMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_Description", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_OldDataTooltip", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_ReverseProxySetupMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_TooManyJobsButNoView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "NullIdDescriptorMonitor", "verify", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", "isOld", "(int)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doDiscard", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doIndex", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doUpgrade", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(Saveable,Collection)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(Saveable,String)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(UnmarshallingContext,String)", "summary", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", "getTestForReverseProxySetup", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "TooManyJobsButNoView", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_IncorrectJobType", "(Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoBuild", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoSuchJob", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoSuchPermalink", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoWorkspace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_IncorrectJobType", "(Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoBuild", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoSuchJob", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoSuchPermalink", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoWorkspace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.init.impl", "GroovyInitScript", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "InitialUserContent", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "InstallUncaughtExceptionHandler", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "GroovyInitScript_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "InitialUserContent_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "_GroovyInitScript_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "_InitialUserContent_init", "()", "summary", "df-generated"] + - ["hudson.init", "InitMilestone", "ordering", "()", "summary", "df-generated"] + - ["hudson.init", "InitMilestone", "toString", "()", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "get", "(ClassLoader)", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "listPluginArchives", "(PluginManager)", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "skipInitTask", "(Task)", "summary", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", "toString", "()", "summary", "df-generated"] + - ["hudson.init", "TermMilestone", "ordering", "()", "summary", "df-generated"] + - ["hudson.init", "TermMilestone", "toString", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "canRestart", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "canRewriteHudsonWar", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "get", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "getHudsonWar", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onExtendTimeout", "(long,TimeUnit)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onReady", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onReload", "(String,String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onStatusUpdate", "(String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onStop", "(String,String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "restart", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "rewriteHudsonWar", "(File)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "verifyRestartable", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsInstallerLink_Description", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsInstallerLink_DisplayName", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_ConfirmInstallation", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_DotNetRequired", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_InstallationSuccessful", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_RootFsDoesntExist", "(Object)", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsInstallerLink_Description", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsInstallerLink_DisplayName", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_ConfirmInstallation", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_DotNetRequired", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_InstallationSuccessful", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_RootFsDoesntExist", "(Object)", "summary", "df-generated"] + - ["hudson.lifecycle", "RestartNotSupportedException", "RestartNotSupportedException", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "doRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "isInstalled", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "registerIfApplicable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "disable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "enable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "getLevel", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "includes", "(LogRecord)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "matches", "(LogRecord)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doAutoCompleteLoggerName", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doCheckName", "(String,String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doClear", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doDoDelete", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getParent", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getSlaveLogRecords", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "load", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doCheckNewName", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doConfigLogger", "(String,String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doNewLogRecorder", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "load", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_LoggerNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_init", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorder_Target_Empty_Warning", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_LoggerNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_init", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorder_Target_Empty_Warning", "()", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "doPreviewDescription", "(String)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "getHelpUrl", "()", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "previewsNowNeedPostForSecurity2153", "(String,StaplerRequest)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "translate", "(String)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "translate", "(String,Writer)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatterDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.markup", "Messages", "EscapedMarkupFormatter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.markup", "Messages", "_EscapedMarkupFormatter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAssignmentAction", "getAssignedLabel", "(SubTask)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "escape", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "findNearest", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "getApplicablePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "getPropertiesList", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "load", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "needsEscape", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtomProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtomProperty", "getActions", "(LabelAtom)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "autoComplete", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "validate", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "validate", "(String,Item)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionLexer", "LabelExpressionLexer", "(CharStream)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "EOF", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "ExprContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "IFF", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "IFF", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "Term1Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "term2", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "term2", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "IMPLIES", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "Term2Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "term3", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "term3", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "OR", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "OR", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "Term3Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "term4", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "term4", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "AND", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "AND", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "Term4Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "term5", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "term5", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "NOT", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "Term5Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "term6", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "ATOM", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "LPAREN", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "RPAREN", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "STRINGLITERAL", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "Term6Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "LabelExpressionParser", "(TokenStream)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "expr", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term2", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term3", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term4", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term5", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term6", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm1", "(Term1Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm2", "(Term2Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm3", "(Term3Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm4", "(Term4Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm5", "(Term5Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm6", "(Term6Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm1", "(Term1Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm2", "(Term2Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm3", "(Term3Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm4", "(Term4Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm5", "(Term5Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm6", "(Term6Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onAnd", "(And,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onAtom", "(LabelAtom,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onIff", "(Iff,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onImplies", "(Implies,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onNot", "(Not,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onOr", "(Or,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onParen", "(Paren,Object)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "checkBeforeCopy", "(Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireLocationChange", "(Item,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnCopied", "(Item,Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnCreated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnDeleted", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnUpdated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onBeforeShutdown", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCheckCopy", "(Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCopied", "(Item,Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCreated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onDeleted", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onLoaded", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onLocationChanged", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onUpdated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireCompleted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireDeleted", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireFinalized", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireInitialize", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireStarted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onCompleted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onDeleted", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onFinalized", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onInitialize", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onStarted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "setUpEnvironment", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onChangeLogParsed", "(AbstractBuild,BuildListener,ChangeLogSet)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onChangeLogParsed", "(Run,SCM,TaskListener,ChangeLogSet)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onCheckout", "(Run,SCM,FilePath,TaskListener,File,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "fireBeforePolling", "(AbstractProject,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "firePollingFailed", "(AbstractProject,TaskListener,Throwable)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "firePollingSuccess", "(AbstractProject,TaskListener,PollingResult)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onBeforePolling", "(AbstractProject,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onPollingFailed", "(AbstractProject,TaskListener,Throwable)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onPollingSuccess", "(AbstractProject,TaskListener,PollingResult)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "fireOnChange", "(Saveable,XmlFile)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "onChange", "(Saveable,XmlFile)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "fromMessage", "(Localizable)", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "print", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model.queue", "Executables", "getEstimatedDurationFor", "(Executable)", "summary", "df-generated"] + - ["hudson.model.queue", "FoldableAction", "foldIntoExisting", "(Item,Task,List)", "summary", "df-generated"] + - ["hudson.model.queue", "FutureLoad", "FutureLoad", "(long,long,int)", "summary", "df-generated"] + - ["hudson.model.queue", "FutureLoad", "toString", "()", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "predict", "(Computer,long,long)", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "predict", "(MappingWorksheet,Computer,long,long)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", "canAccept", "(WorkChunk)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", "capacity", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", "getExecutor", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", "isAvailable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "execute", "(WorkUnitContext)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "get", "(int)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "isCompletelyValid", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "isPartiallyValid", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "size", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$WorkChunk", "applicableExecutorChunks", "()", "summary", "df-generated"] + - ["hudson.model.queue", "Messages", "QueueSorter_installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "Messages", "_QueueSorter_installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterBlocked", "(BlockedItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterBuildable", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterWaiting", "(WaitingItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveBlocked", "(BlockedItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveBuildable", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveWaiting", "(WaitingItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeft", "(LeftItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "sortBlockedItems", "(List)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "sortBuildableItems", "(List)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canRun", "(Item)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canTake", "(Node,BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canTake", "(Node,Task)", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "getCreateItem", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "getItem", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isAccepted", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isCreated", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isRefused", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "refused", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "createExecutable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getAssignedLabel", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getLastBuiltOn", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getOwnerExecutable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getSameNodeConstraint", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTaskContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTaskContributor", "forProject", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getAuthenticationOf2", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getAuthenticationOf", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getDefaultAuthenticationOf", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getDefaultAuthenticationOf", "(Task,Item)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnit", "isMainWork", "()", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeEnd", "(Executable,Throwable,long)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeEnd", "(Executor,Executable,Throwable,long)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeStart", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", "defaultCheckout", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild$DependencyChange", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "doStop", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "doStop", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "due", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getAggregatedTestResultAction", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuildVariableResolver", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuildVariables", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuiltOn", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDependencyChanges", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamBuilds", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getSensitiveBuildVariables", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getTestResultAction", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getTransitiveUpstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpUrl", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamRelationshipBuild", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "hasChangeSetComputed", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractCIBase", "getNodes", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractCIBase", "getQueue", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doCheckNewName", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doConfigDotXml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doReload", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "getPronoun", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "getTaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "isNameEditable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "updateByXml", "(Source)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "updateByXml", "(StreamSource)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "writeConfigDotXml", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "AbstractModelObject", "makeSearchIndex", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteAssignedLabelString", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteLabel", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteUpstreamProjects", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckAssignedLabelString", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckCustomWorkspace", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckLabel", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "getApplicableSCMCheckoutStrategyDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "validateLabelExpression", "(String,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$LabelValidator", "check", "(AbstractProject,Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$LabelValidator", "checkItem", "(Item,Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "blockBuildWhenDownstreamBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "blockBuildWhenUpstreamBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "checkout", "(AbstractBuild,Launcher,BuildListener,File)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "disable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doBuild", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doBuildWithParameters", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doCheckRetryCount", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doDoWipeOutWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "enable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "findNearest", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "findNearest", "(String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildTriggerUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildingDownstream", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildingUpstream", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDelay", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDownstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDownstreamProjectsForApi", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getHasCustomQuietPeriod", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getJDK", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getModuleRoot", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getModuleRoots", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getProminentActions", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getPublishersList", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getSomeBuildWithWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getSomeWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTransitiveDownstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTransitiveUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTrigger", "(Class)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getUpstreamProjectsForApi", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "hasCustomScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "hasParticipant", "(User)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "isConfigurable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "isFingerprintConfigured", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "poll", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "pollSCMChanges", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "removeTrigger", "(TriggerDescriptor)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause,Action[])", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause,Collection)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild", "(int,Cause,Action[])", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "schedulePolling", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setAssignedLabel", "(Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setAssignedNode", "(Node)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setBlockBuildWhenDownstreamBuilding", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setBlockBuildWhenUpstreamBuilding", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setConcurrentBuild", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setQuietPeriod", "(Integer)", "summary", "df-generated"] + - ["hudson.model", "Action", "getIconFileName", "()", "summary", "df-generated"] + - ["hudson.model", "Action", "getUrlName", "()", "summary", "df-generated"] + - ["hudson.model", "Actionable", "getAction", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "getActions", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "removeAction", "(Action)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "removeActions", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "replaceActions", "(Class,Action)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "disable", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "doDisable", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "getRequiredPermission", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isActivated", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isSecurity", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "all", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "doAperiodicRun", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getInitialDelay", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getNewInstance", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getRecurrencePeriod", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "init", "()", "summary", "df-generated"] + - ["hudson.model", "Api", "doJson", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doPython", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doSchema", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doXml", "(StaplerRequest,StaplerResponse,String,String,String,int)", "summary", "df-generated"] + - ["hudson.model", "AsyncPeriodicWork", "execute", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", "ofJobNames", "(Class,String,Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", "ofJobNames", "(Class,String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getBaseColor", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getHtmlBaseColor", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getIconName", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getImage", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "isAnimated", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", "isDefaultValue", "()", "summary", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", "setDefaultValue", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "checkPermission", "(AbstractProject,BuildAuthorizationToken,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "checkPermission", "(Job,BuildAuthorizationToken,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "create", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "BuildListener", "finished", "(Result)", "summary", "df-generated"] + - ["hudson.model", "BuildListener", "started", "(List)", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "finished", "(AbstractBuild,BuildStep,BuildListener,boolean)", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "started", "(AbstractBuild,BuildStep,BuildListener)", "summary", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", "doData", "(StaplerRequest,long,long)", "summary", "df-generated"] + - ["hudson.model", "BuildVariableContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "BuildVariableContributor", "buildVariablesFor", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "()", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(Cause)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(int)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(int,Cause)", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause$DeeplyNestedUpstreamCause", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "getUpstreamBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "getUpstreamRun", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "pointsTo", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "pointsTo", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Cause", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Cause", "onLoad", "(Job,int)", "summary", "df-generated"] + - ["hudson.model", "Cause", "print", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "CauseAction", "findCause", "(Class)", "summary", "df-generated"] + - ["hudson.model", "CauseAction", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "block", "()", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "block", "(BuildListener,String)", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "report", "()", "summary", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition$DescriptorImpl", "doCheckChoices", "(String)", "summary", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", "areValidChoices", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer$TerminationRequest", "getWhen", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "buildEnvironment", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Computer", "cliConnect", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Computer", "cliOnline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countBusy", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "currentComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "disconnect", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "doChangeOfflineCause", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doConfigDotXml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doDoDelete", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "doDumpExportTable", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doLaunchSlaveAgent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doScript", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doScriptText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doToggleOffline", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "getAssignedLabels", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getCaption", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getConnectTime", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDefaultCharset", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDemandStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIcon", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIconAltText", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIdleStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLoadStatistics", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getMonitorData", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getNode", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getNumExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getOfflineCauseReason", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getRetentionStrategy", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getThreadDump", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getTiedJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getTimeline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "interrupt", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isAcceptingTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isConnecting", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isJnlpAgent", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isLaunchSupported", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isManualLaunchAllowed", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isOnline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isPartiallyIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isTemporarilyOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isUnix", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "launch", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "recordTermination", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "relocateOldLogs", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "setTemporarilyOffline", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Computer", "updateByXml", "(InputStream)", "summary", "df-generated"] + - ["hudson.model", "Computer", "waitUntilOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "waitUntilOnline", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "checkIsReachable", "(InetAddress,int)", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "isReachable", "(InetAddress,int)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet$DescriptorImpl", "doAutoCompleteCopyNewItemFrom", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "checkName", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doConfigSubmit", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doCreateItem", "(StaplerRequest,StaplerResponse,String,String,String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doDoCreateItem", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doUpdateNow", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "do_launchAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getComputerNames", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getDynamic", "(String,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getMonitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getNodeMonitorDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getNonIgnoredMonitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_all", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_monitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_slaveNames", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "init", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "initialize", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", "pointsItself", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", "shouldTriggerBuild", "(AbstractBuild,TaskListener,List)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(AbstractProject,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(Collection,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(Dependency)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependencyDeclarers", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "build", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "hasIndirectDependencies", "(AbstractProject,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getApplicableDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getApplicableItemDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getEnumConstants", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemType", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemTypeDescriptor", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemTypeDescriptorOrDie", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "bindJSON", "(StaplerRequest,Class,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "calcAutoCompleteSettings", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "calcFillSettings", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "configure", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "doHelp", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "find", "(String)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getCategory", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getConfigPage", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getCurrentDescriptorByNameUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDescriptorFullUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDescriptorUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getGlobalConfigPage", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getJsonSafeClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getKlass", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getRequiredGlobalConfigPagePermission", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getT", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "isInstance", "(Describable)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "isSubTypeOf", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstance", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstance", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstancesFromHeteroList", "(StaplerRequest,JSONObject,String,Collection)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstancesFromHeteroList", "(StaplerRequest,Object,Collection)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "DescriptorByNameOwner", "getDescriptorByName", "(String)", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "all", "()", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "filter", "(Object,Descriptor)", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "filterType", "(Class,Descriptor)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "doAddJobToView", "(String)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "doRemoveJobFromView", "(String)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "remove", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getIconName", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getLastModified", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getLastModifiedAsCalendar", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getSize", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "isFolder", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "isReadable", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", "serveFile", "(StaplerRequest,StaplerResponse,FilePath,String,boolean)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "Downloadable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "all", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "get", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "get", "(String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getData", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getDue", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getInterval", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "hasDuplicates", "(List,String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "idFor", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "updateNow", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$DownloadableListener", "installListener", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "generateFragment", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "getById", "(String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "loadJSON", "(URL)", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "loadJSONHTML", "(URL)", "summary", "df-generated"] + - ["hudson.model", "Environment", "buildEnvVars", "(Map)", "summary", "df-generated"] + - ["hudson.model", "Environment", "create", "(EnvVars)", "summary", "df-generated"] + - ["hudson.model", "Environment", "tearDown", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "buildEnvironmentFor", "(Job,EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "buildEnvironmentFor", "(Run,EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentList", "get", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Executor", "completedAsynchronous", "(Throwable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "currentExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStop", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStop", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStopBuild", "(String)", "summary", "df-generated"] + - ["hudson.model", "Executor", "doYank", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getCauseOfDeath", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getElapsedTime", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedDurationFor", "(Executable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedRemainingTime", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedRemainingTimeMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getIdleStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getTimeSpentInQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "hasStopPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isActive", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isBusy", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isDisplayCell", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isLikelyStuck", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isParking", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "newImpersonatingProxy", "(Class,Object)", "summary", "df-generated"] + - ["hudson.model", "Executor", "of", "(Executable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "recordCauseOfInterruption", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskAccepted", "(Executor,Task)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskCompleted", "(Executor,Task,long)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskCompletedWithProblems", "(Executor,Task,long,Throwable)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskStarted", "(Executor,Task)", "summary", "df-generated"] + - ["hudson.model", "Failure", "generateResponse", "(StaplerRequest,StaplerResponse,Object,Throwable)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "belongsTo", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getJob", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getRun", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "is", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "is", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "Range", "(int,int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "combine", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "contains", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "expandLeft", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "expandRight", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "getEnd", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "getStart", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "includes", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "intersect", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isAdjacentTo", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isBiggerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isDisjoint", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isIndependent", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isSingle", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isSmallerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet$ConverterImpl", "serialize", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "add", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "addAll", "(int[])", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "fromString", "(String,boolean)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "includes", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "isSmallerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "listNumbers", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "listNumbersReverse", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "max", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "min", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "removeAll", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "retainAll", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "delete", "(String)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getActions", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getFacet", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getFacets", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getSortedFacets", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getXStream", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "isAlive", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "load", "(String)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "trim", "()", "summary", "df-generated"] + - ["hudson.model", "FingerprintCleanupThread", "invoke", "()", "summary", "df-generated"] + - ["hudson.model", "FingerprintMap", "isReady", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "getAggregatedReports", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "getScore", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "isAggregateReport", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "setScore", "(int)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "adminCheck", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "adminCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doFieldCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doFieldCheck", "(String,String,String,String)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doLogRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doQuietDown", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "getInstance", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isAdmin", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isAdmin", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isDarwin", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isWindows", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "setSlaves", "(List)", "summary", "df-generated"] + - ["hudson.model", "Item", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "getAbsoluteUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "getAllJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "onCopiedFrom", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Item", "onCreatedFromScratch", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "(Class)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "(Class,Predicate)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "onRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", "copy", "(TopLevelItem,String)", "summary", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", "createProjectFromXML", "(String,InputStream)", "summary", "df-generated"] + - ["hudson.model", "ItemVisitor", "onItem", "(Item)", "summary", "df-generated"] + - ["hudson.model", "ItemVisitor", "walk", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "all2", "(Authentication,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "(Authentication,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "currentlyUpdatingByXml", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "findNearest", "(Class,String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "fromNameList", "(ItemGroup,String,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "fromNameList", "(String,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "getAllItems", "(ItemGroup,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "getAllItems", "(ItemGroup,Class,Predicate)", "summary", "df-generated"] + - ["hudson.model", "Items", "getDescriptor", "(String)", "summary", "df-generated"] + - ["hudson.model", "Items", "whileUpdatingByXml", "(Callable)", "summary", "df-generated"] + - ["hudson.model", "JDK", "getExists", "()", "summary", "df-generated"] + - ["hudson.model", "JDK", "isDefaultJDKValid", "(Node)", "summary", "df-generated"] + - ["hudson.model", "JDK", "isDefaultName", "(String)", "summary", "df-generated"] + - ["hudson.model", "Job", "assignBuildNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "doBuildStatus", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doDoRename", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssChangelog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildStatusIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildStatusUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildTimeGraph", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getIconColor", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getNextBuildNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getPermalinks", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Job", "getQueueItem", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isBuildable", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isHoldOffBuildUntilSave", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isInQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isKeepDependencies", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isLogUpdated", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "logRotate", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "removeProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Job", "removeProperty", "(JobProperty)", "summary", "df-generated"] + - ["hudson.model", "Job", "setBuildDiscarder", "(BuildDiscarder)", "summary", "df-generated"] + - ["hudson.model", "Job", "setLogRotator", "(LogRotator)", "summary", "df-generated"] + - ["hudson.model", "Job", "supportsLogRotator", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "updateNextBuildNumber", "(int)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobAction", "(Job)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobActions", "(Job)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobOverrides", "()", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getSubTasks", "()", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "getPropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Label", "accept", "(LabelVisitor,Object)", "summary", "df-generated"] + - ["hudson.model", "Label", "contains", "(Node)", "summary", "df-generated"] + - ["hudson.model", "Label", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getExpression", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTiedJobCount", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTiedJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTotalConfiguredExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isAssignable", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isAtom", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isSelfLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(Collection)", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(Node)", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(VariableResolver)", "summary", "df-generated"] + - ["hudson.model", "Label", "parse", "(String)", "summary", "df-generated"] + - ["hudson.model", "Label", "parseExpression", "(String)", "summary", "df-generated"] + - ["hudson.model", "Label", "precedence", "()", "summary", "df-generated"] + - ["hudson.model", "LabelFinder", "all", "()", "summary", "df-generated"] + - ["hudson.model", "LabelFinder", "findLabels", "(Node)", "summary", "df-generated"] + - ["hudson.model", "ListView$DescriptorImpl", "doCheckIncludeRegex", "(String)", "summary", "df-generated"] + - ["hudson.model", "ListView", "getDefaultColumns", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "getStatusFilter", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "hasJobFilterExtensions", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "isAddToCurrentView", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "isRecurse", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "jobNamesContains", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setColumns", "(List)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setJobFilters", "(List)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setRecurse", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setStatusFilter", "(Boolean)", "summary", "df-generated"] + - ["hudson.model", "LoadBalancer", "map", "(Task,MappingWorksheet)", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", "build", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "builder", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getAvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getDefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getOnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getQueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeQueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeSnapshot", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "createChart", "(CategoryDataset)", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "getLatestIdleExecutors", "(TimeScale)", "summary", "df-generated"] + - ["hudson.model", "ManageJenkinsAction", "addContextMenuItem", "(ContextMenu,String,String,String,String,boolean,boolean)", "summary", "df-generated"] + - ["hudson.model", "ManagementLink$Category", "getLabel", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getBadge", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getCategory", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiredPermission", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiresConfirmation", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiresPOST", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_Building", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingInWorkspace", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingOnMaster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingRemotely", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_KeptBecause", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_BeingDeleted", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_FailureToStopBuilds", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NewNameInUse", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NewNameUnchanged", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NoSuchJobExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NoSuchJobExistsWithoutSuggestion", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_TaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_AwaitingBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_AwaitingWorkspaceToComeOnline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_CancelPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_CustomWorkspaceEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_DiscoverPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_DownstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NewBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoSCM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_PollingABorted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_ScmAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_UpstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WipeOutPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspacePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceTitle", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceTitleOnComputer", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_MultipleMatch", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_NoXPathMatch", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_WrapperParamInvalid", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Pending", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BooleanParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BuildAuthorizationToken_InvalidTokenProvided", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Build_post_build_steps_failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_clear_queue_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_online_node_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_LegacyCodeCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_RemoteCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_RemoteCause_ShortDescriptionWithNote", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UpstreamCause_CausedBy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UpstreamCause_ShortDescription", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UserCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UserIdCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ChoiceParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ChoiceParameterDefinition_MissingChoices", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_NoSuchSlave", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_SlaveAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_SpecifySlaveToCopy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_BadChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_Caption", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ConnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_DisconnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_NoSuchSlaveExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_NoSuchSlaveExistsWithoutAdvice", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Descriptor_From", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Executor_NotAvailable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FileParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FileParameterValue_IndexTitle", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FreeStyleProject_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FreeStyleProject_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "HealthReport_EmptyString", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_AdministerPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_MustBeAtLeast", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_MustBeAtMost", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANonNegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotAPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotAPositiveNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotJDKDir", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_RunScriptsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_TrailingDot", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_USER_CONTENT_README", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ViewName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ItemGroupMixIn_may_not_copy_as_it_contains_secrets_and_", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_CONFIGURE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_CREATE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_DELETE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_READ_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_RENAME_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "JDK_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_CheckDisplayName_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_CheckDisplayName_NameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_IsRestarting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_Manage_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_NotAllowedName", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_SystemRead_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_AllRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_BuildStability", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NOfMFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NoRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NoRenameWhileBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_minutes", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_you_must_use_the_save_button_if_you_wish", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_InvalidBooleanExpression", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_LabelLink", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_NoMatch", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_NoMatch_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_ObsoleteMasterLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_GroupOf", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_InvalidLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_ProvisionedFrom", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ListView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_AvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_BusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_ConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_DefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_IdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_OnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_QueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_TotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManageJenkinsAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_CONFIGURATION", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_MISC", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_SECURITY", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_STATUS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_TOOLS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_TROUBLESHOOTING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_UNCATEGORIZED", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MultiStageTimeSeries_EMPTY_STRING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_GlobalAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_ViewExistsCheck_AlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_ViewExistsCheck_NotExist", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_BecauseNodeIsNotAcceptingTasks", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_BecauseNodeIsReserved", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_LabelMissing", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_LackingBuildPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_Mode_EXCLUSIVE", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_Mode_NORMAL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ParameterAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ParametersDefinitionProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "PasswordParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastCompletedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastFailedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastStableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastSuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastUnstableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastUnsuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ProxyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ProxyView_NoSuchViewExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_AllNodesOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_BlockedBy", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_ExceptionCanRun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_ExceptionCanTake", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_FinishedWaiting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_HudsonIsAboutToShutDown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_InQuietPeriod", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_LabelHasNoNodes", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_NodeOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_WaitingForNextAvailableExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_WaitingForNextAvailableExecutorOn", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_executor_slot_already_in_use", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_node_has_been_removed_from_configuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Failure", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Fixed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_NowUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_StillFailing", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_StillUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "RunParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_ArtifactsBrowserTitle", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_ArtifactsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_BuildAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_InProgressDuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_MarkedExplicitly", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_NotStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BackToNormal", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenForALongTime", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenSince", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenSinceThisBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Stable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_UnableToDelete", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_UpdatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run__is_waiting_for_a_checkpoint_on_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_running_as_", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_running_as_SYSTEM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_InvalidConfig_Executors", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_InvalidConfig_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Network_Mounted_File_System_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Remote_Director_Mandatory", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Remote_Relative_Path_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Terminated", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_UnixSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_WindowsSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "StringParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TextParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_DisplayDefaultTimeZone", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_current_time_in_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_current_time_on_server_in_in_proposed_di", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "TopLevelItemDescriptor_NotApplicableIn", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_CoreUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_DownloadButNotActivated", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_agent", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_android", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_api_plugin", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_builder", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_buildwrapper", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cli", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cloud", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cluster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_database", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_deployment", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_devops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_devsecops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_dotnet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_external", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_groovy_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ios", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_listview_column", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_maven", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_misc", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_must_be_labeled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_notifier", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_orchestration", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_page_decorator", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_parameter", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_post_build", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_python", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_report", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ruby", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_runcondition", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scala", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scm", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scm_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_security", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_test", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_theme", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_trigger", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ui", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_unrecognized", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_upload", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_user", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_view", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_CheckingInternet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_CheckingJavaNet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_ConnectionFailed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_UnknownHostException", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_n_a", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "User_IllegalFullname", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "User_IllegalUsername", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_MissingMode", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_Building", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingInWorkspace", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingOnMaster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingRemotely", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_KeptBecause", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_BeingDeleted", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_FailureToStopBuilds", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NewNameInUse", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NewNameUnchanged", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NoSuchJobExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NoSuchJobExistsWithoutSuggestion", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_TaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_AwaitingBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_AwaitingWorkspaceToComeOnline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_CancelPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_CustomWorkspaceEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_DiscoverPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_DownstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NewBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoSCM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_PollingABorted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_ScmAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_UpstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WipeOutPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspacePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceTitle", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceTitleOnComputer", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_MultipleMatch", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_NoXPathMatch", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_WrapperParamInvalid", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Pending", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BooleanParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BuildAuthorizationToken_InvalidTokenProvided", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Build_post_build_steps_failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_clear_queue_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_online_node_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_LegacyCodeCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_RemoteCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_RemoteCause_ShortDescriptionWithNote", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UpstreamCause_CausedBy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UpstreamCause_ShortDescription", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UserCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UserIdCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ChoiceParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ChoiceParameterDefinition_MissingChoices", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_NoSuchSlave", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_SlaveAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_SpecifySlaveToCopy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_BadChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_Caption", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ConnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_DisconnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_NoSuchSlaveExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_NoSuchSlaveExistsWithoutAdvice", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Descriptor_From", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Executor_NotAvailable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FileParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FileParameterValue_IndexTitle", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FreeStyleProject_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FreeStyleProject_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_HealthReport_EmptyString", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_AdministerPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_MustBeAtLeast", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_MustBeAtMost", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANonNegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotAPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotAPositiveNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotJDKDir", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_RunScriptsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_TrailingDot", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_USER_CONTENT_README", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ViewName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ItemGroupMixIn_may_not_copy_as_it_contains_secrets_and_", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_CONFIGURE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_CREATE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_DELETE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_READ_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_RENAME_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_JDK_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_CheckDisplayName_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_CheckDisplayName_NameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_IsRestarting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_Manage_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_NotAllowedName", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_SystemRead_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_AllRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_BuildStability", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NOfMFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NoRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NoRenameWhileBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_minutes", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_you_must_use_the_save_button_if_you_wish", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_InvalidBooleanExpression", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_LabelLink", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_NoMatch", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_NoMatch_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_ObsoleteMasterLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_GroupOf", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_InvalidLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_ProvisionedFrom", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ListView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_AvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_BusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_ConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_DefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_IdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_OnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_QueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_TotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManageJenkinsAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_CONFIGURATION", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_MISC", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_SECURITY", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_STATUS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_TOOLS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_TROUBLESHOOTING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_UNCATEGORIZED", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MultiStageTimeSeries_EMPTY_STRING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_GlobalAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_ViewExistsCheck_AlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_ViewExistsCheck_NotExist", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_BecauseNodeIsNotAcceptingTasks", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_BecauseNodeIsReserved", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_LabelMissing", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_LackingBuildPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_Mode_EXCLUSIVE", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_Mode_NORMAL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ParameterAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ParametersDefinitionProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_PasswordParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastCompletedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastFailedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastStableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastSuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastUnstableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastUnsuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ProxyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ProxyView_NoSuchViewExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_AllNodesOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_BlockedBy", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_ExceptionCanRun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_ExceptionCanTake", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_FinishedWaiting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_HudsonIsAboutToShutDown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_InQuietPeriod", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_LabelHasNoNodes", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_NodeOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_WaitingForNextAvailableExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_WaitingForNextAvailableExecutorOn", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_executor_slot_already_in_use", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_node_has_been_removed_from_configuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Failure", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Fixed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_NowUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_StillFailing", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_StillUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_RunParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_ArtifactsBrowserTitle", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_ArtifactsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_BuildAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_InProgressDuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_MarkedExplicitly", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_NotStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BackToNormal", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenForALongTime", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenSince", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenSinceThisBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Stable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_UnableToDelete", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_UpdatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run__is_waiting_for_a_checkpoint_on_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_running_as_", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_running_as_SYSTEM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_InvalidConfig_Executors", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_InvalidConfig_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Network_Mounted_File_System_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Remote_Director_Mandatory", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Remote_Relative_Path_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Terminated", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_UnixSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_WindowsSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_StringParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TextParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_DisplayDefaultTimeZone", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_current_time_in_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_current_time_on_server_in_in_proposed_di", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TopLevelItemDescriptor_NotApplicableIn", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_CoreUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_DownloadButNotActivated", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_agent", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_android", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_api_plugin", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_builder", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_buildwrapper", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cli", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cloud", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cluster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_database", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_deployment", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_devops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_devsecops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_dotnet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_external", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_groovy_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ios", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_listview_column", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_maven", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_misc", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_must_be_labeled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_notifier", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_orchestration", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_page_decorator", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_parameter", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_post_build", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_python", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_report", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ruby", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_runcondition", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scala", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scm", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scm_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_security", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_test", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_theme", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_trigger", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ui", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_unrecognized", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_upload", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_user", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_view", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_CheckingInternet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_CheckingJavaNet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_ConnectionFailed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_UnknownHostException", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_n_a", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_User_IllegalFullname", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_User_IllegalUsername", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_MissingMode", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "ModelObject", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TimeScale", "createDateFormat", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TimeScale", "parse", "(String)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TrendChart", "createChart", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "MultiStageTimeSeries", "(float,float)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "getLatest", "(TimeScale)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "update", "(float)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doCreateView", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doIndex", "()", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doViewExistsCheck", "(String,boolean)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "getMyViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.model", "Node$Mode", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Node$Mode", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "canTake", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Node", "createComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "createLauncher", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Node", "getChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getClockDifference", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getClockDifferenceCallable", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getFileSystemProvisioner", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getLabelCloud", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getLabelString", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getMode", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeName", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeProperties", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNumExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getRootPath", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getWorkspaceFor", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "Node", "isAcceptingTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "isHoldOffLaunchUntilSave", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "setLabelString", "(String)", "summary", "df-generated"] + - ["hudson.model", "Node", "setNodeName", "(String)", "summary", "df-generated"] + - ["hudson.model", "Node", "toComputer", "()", "summary", "df-generated"] + - ["hudson.model", "PageDecorator", "all", "()", "summary", "df-generated"] + - ["hudson.model", "PageDecorator", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "forCurrentUser", "()", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "isCollapsed", "(String)", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "toggleCollapsed", "(String)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition$ParameterDescriptor", "getValuePage", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(CLICommand,String)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getDefaultParameterValue", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getFormattedDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "isValid", "(ParameterValue)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "createBuildWrapper", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "createVariableResolver", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getAssignedLabel", "(SubTask)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getDefinition", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getFormattedDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getValue", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "isSensitive", "()", "summary", "df-generated"] + - ["hudson.model", "ParametersAction", "createBuildWrappers", "(AbstractBuild,Collection)", "summary", "df-generated"] + - ["hudson.model", "ParametersAction", "createVariableResolver", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "_doBuild", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "_doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "buildWithParameters", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "buildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "all", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "getInitialDelay", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "getRecurrencePeriod", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "init", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "resolve", "(Job)", "summary", "df-generated"] + - ["hudson.model", "PersistentDescriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Project", "getBuilders", "()", "summary", "df-generated"] + - ["hudson.model", "Project", "removePublisher", "(Descriptor)", "summary", "df-generated"] + - ["hudson.model", "ProxyView", "doViewExistsCheck", "(String)", "summary", "df-generated"] + - ["hudson.model", "ProxyView", "getProxiedView", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", "isCauseOfBlockageNull", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", "isPending", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Executable", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Executable", "getParentExecutable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "authenticate2", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "authenticate", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "doCancelQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCauseOfBlockage", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCauses", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCausesDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getIdLegacy", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getInQueueForString", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getInQueueSince", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getParams", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "hasCancelPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isBuildable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isStuck", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "canTake", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "getCauseOfBlockage", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "getNode", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "isNotExclusive", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$LeftItem", "getExecutable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$LeftItem", "isCancelled", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueAction", "shouldSchedule", "(List)", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueDecisionHandler", "all", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueDecisionHandler", "shouldSchedule", "(Task,List)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "checkAbortPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getCauseOfBlockage", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication2", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication2", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getWhyBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "hasAbortPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "isBuildBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "isConcurrentBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "Queue", "(LoadBalancer)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(AbstractProject,int)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(Task,int)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(Task,int,Action[])", "summary", "df-generated"] + - ["hudson.model", "Queue", "cancel", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue", "cancel", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "clear", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "clearLeftItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "contains", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "countBuildableItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "countBuildableItemsFor", "(Label)", "summary", "df-generated"] + - ["hudson.model", "Queue", "doCancelItem", "(long)", "summary", "df-generated"] + - ["hudson.model", "Queue", "getApproximateItemsQuickly", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getDiscoverableItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getInstance", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getUnblockedTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "ifBlockedByHudsonShutdown", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.model", "Queue", "isBlockedByShutdown", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "isPending", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "maintain", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "setLoadBalancer", "(LoadBalancer)", "summary", "df-generated"] + - ["hudson.model", "Queue", "strictCountBuildableItemsFor", "(Label)", "summary", "df-generated"] + - ["hudson.model", "Queue", "tryWithLock", "(Runnable)", "summary", "df-generated"] + - ["hudson.model", "Queue", "withLock", "(Callable)", "summary", "df-generated"] + - ["hudson.model", "Queue", "withLock", "(Runnable)", "summary", "df-generated"] + - ["hudson.model", "RSS", "forwardToRss", "(String,String,Collection,FeedAdapter,StaplerRequest,HttpServletResponse)", "summary", "df-generated"] + - ["hudson.model", "RSS", "rss", "(StaplerRequest,StaplerResponse,String,String,RunList)", "summary", "df-generated"] + - ["hudson.model", "RSS", "rss", "(StaplerRequest,StaplerResponse,String,String,RunList,FeedAdapter)", "summary", "df-generated"] + - ["hudson.model", "Resource", "isCollidingWith", "(Resource,int)", "summary", "df-generated"] + - ["hudson.model", "ResourceActivity", "getResourceList", "()", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "canRun", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "execute", "(Runnable,ResourceActivity)", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "getMissingResource", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceList", "isCollidingWith", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceList", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "isAllReady", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "isReadyToRestart", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "onRestart", "()", "summary", "df-generated"] + - ["hudson.model", "Result$OptionHandlerImpl", "OptionHandlerImpl", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.model", "Result", "fromString", "(String)", "summary", "df-generated"] + - ["hudson.model", "Result", "init", "()", "summary", "df-generated"] + - ["hudson.model", "Result", "isBetterOrEqualTo", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isBetterThan", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isCompleteBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Result", "isWorseOrEqualTo", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isWorseThan", "(Result)", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getID", "()", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getResultTrend", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getResultTrend", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Run$Artifact", "getFileSize", "()", "summary", "df-generated"] + - ["hudson.model", "Run$ArtifactList", "computeDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Run$KeepLogBuildBadge", "getWhyKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RedirectUp", "doDynamic", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "cleanUp", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "getBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "getProject", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "post", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "run", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$StatusSummarizer", "summarize", "(Run,ResultTrend)", "summary", "df-generated"] + - ["hudson.model", "Run", "canToggleLogKeep", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "deleteArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildNumber", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildStatus", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildTimestamp", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.model", "Run", "doConfigSubmit", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Run", "doConsoleText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doToggleLogKeep", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "fromExternalizableId", "(String)", "summary", "df-generated"] + - ["hudson.model", "Run", "getAbsoluteUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getArtifactsUpTo", "(int)", "summary", "df-generated"] + - ["hudson.model", "Run", "getBadgeActions", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildFingerprints", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusSummary", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getCause", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Run", "getCauses", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getCharset", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getDurationString", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getHasArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getIconColor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getLog", "(int)", "summary", "df-generated"] + - ["hudson.model", "Run", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getOneOffExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getQueueId", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getStartTimeInMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTime", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimeInMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestampString2", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getWhyKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "hasCustomDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "hasntStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isInProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isLogUpdated", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "keepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "keepLog", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Run", "reload", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "setQueueId", "(long)", "summary", "df-generated"] + - ["hudson.model", "Run", "updateSymlinks", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Run", "writeLogTo", "(long,XMLOutput)", "summary", "df-generated"] + - ["hudson.model", "Run", "writeWholeLogTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "RunMap", "newestValue", "()", "summary", "df-generated"] + - ["hudson.model", "RunMap", "oldestValue", "()", "summary", "df-generated"] + - ["hudson.model", "RunMap", "remove", "(Run)", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition$DescriptorImpl", "doAutoCompleteProjectName", "(String)", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition$RunParameterFilter", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getFilter", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getProject", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterValue", "getRun", "()", "summary", "df-generated"] + - ["hudson.model", "Saveable", "save", "()", "summary", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", "createValue", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "getURL", "()", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "readFully", "()", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "computerLauncherDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "doCheckNumExecutors", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "doCheckRemoteFS", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "nodePropertyDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "retentionStrategyDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave", "getComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Slave", "getWorkspaceRoot", "()", "summary", "df-generated"] + - ["hudson.model", "Slave", "setMode", "(Mode)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setNodeProperties", "(List)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setNumExecutors", "(int)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setUserId", "(String)", "summary", "df-generated"] + - ["hudson.model", "StatusIcon", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "StreamBuildListener", "StreamBuildListener", "(File,Charset)", "summary", "df-generated"] + - ["hudson.model", "StringParameterDefinition", "isTrim", "()", "summary", "df-generated"] + - ["hudson.model", "StringParameterDefinition", "setTrim", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "StringParameterValue", "doTrim", "()", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doClearError", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doProgressiveHtml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "obtainLog", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "annotate", "(ConsoleNote)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "error", "(String)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "fatalError", "(String)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "fatalError", "(String,Object[])", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "getCharset", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "getLogger", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "hyperlink", "(String,String)", "summary", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", "forFile", "(File)", "summary", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", "forMemory", "()", "summary", "df-generated"] + - ["hudson.model", "TaskThread", "isRunning", "()", "summary", "df-generated"] + - ["hudson.model", "TaskThread", "readAll", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "TimeSeries", "(float,float,int)", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "getHistory", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "getLatest", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "update", "(float)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty$DescriptorImpl", "doCheckTimeZoneName", "(String)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty$DescriptorImpl", "doFillTimeZoneNameItems", "(User)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty", "forCurrentUser", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "checkApplicableIn", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getCategoryId", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getIconFilePathPattern", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "isApplicable", "(Descriptor)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "isApplicableIn", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "newInstance", "(ItemGroup,String)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "testInstance", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "createFor", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "createFor", "(Run)", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "createAllFor", "(Computer)", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "createFor", "(Computer)", "summary", "df-generated"] + - ["hudson.model", "TransientProjectActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientProjectActionFactory", "createFor", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "TransientUserActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientUserActionFactory", "createFor", "(User)", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "createAllFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "createFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$CoreUpdateMonitor", "getData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "isSuccess", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "requiresRestart", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Installing", "Installing", "(int)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "_run", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getContentLength", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob$Pending", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob", "cancel", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "checkConnection", "(ConnectionCheckJob,String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "checkUpdateCenter", "(ConnectionCheckJob,String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "download", "(DownloadJob,URL)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getConnectionCheckUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getPluginRepositoryBaseUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getUpdateCenterUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "install", "(DownloadJob,File,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "postValidate", "(DownloadJob,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "preValidate", "(DownloadJob,URL)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "upgrade", "(DownloadJob,File,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "schedule", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "submit", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doCancelRestart", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doConnectionStatus", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doDowngrade", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doIncompleteInstallStatus", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doInstallStatus", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doInvalidateData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doRestart", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doSafeRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doUpgrade", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getAvailables", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getBackupVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getCategorizedAvailables", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getDefaultBaseUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getLastUpdatedString", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPlugin", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPlugin", "(String,VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPluginFromAllSites", "(String,VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getSiteList", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "hasIncompatibleUpdates", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isDowngradable", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isRestartRequiredForCompletion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isRestartScheduled", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isSiteDataReady", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "load", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "persistInstallStatus", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateAllSites", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateAllSitesNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateDefaultSite", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Data", "canUpgrade", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Data", "hasCoreUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", "getFileSize", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", "isNewerThan", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "(boolean,UUID,List,boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deployBackup", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doDowngrade", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doInstall", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doInstallNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "fixesSecurityVulnerabilities", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDependenciesIncompatibleWithInstalledVersion", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDeprecation", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getInstalled", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getNeededDependencies", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getNeededDependenciesRequiredCore", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getWarnings", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasCategory", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasIncompatibleParentPlugins", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasWarnings", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "install", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatible", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatible", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatibleWithInstalledVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isDeprecated", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isForNewerHudson", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesCompatibleWithInstalledVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesCompatibleWithInstalledVersion", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesForNewerJenkins", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesForNewerJenkins", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "Warning", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isFixable", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isPluginWarning", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isRelevant", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isRelevantToVersion", "(VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$WarningVersionRange", "WarningVersionRange", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$WarningVersionRange", "includes", "(VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "doInvalidateData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "doVerifySignature", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getDataTimestamp", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getJSONObject", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "hasUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "isDue", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "isLegacyDefault", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectly", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectly", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectlyNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectlyNow", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "verifySignatureInternal", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherInputStream", "CombinedCipherInputStream", "(InputStream,Cipher,String,int)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherInputStream", "CombinedCipherInputStream", "(InputStream,RSAKey,String)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics", "getStatData", "()", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics", "isDue", "()", "summary", "df-generated"] + - ["hudson.model", "User$AllUsers", "scanAll", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "all", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "getPriority", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "resolveCanonicalId", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "User", "canDelete", "()", "summary", "df-generated"] + - ["hudson.model", "User", "clear", "()", "summary", "df-generated"] + - ["hudson.model", "User", "current", "()", "summary", "df-generated"] + - ["hudson.model", "User", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "User", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "get2", "(Authentication)", "summary", "df-generated"] + - ["hudson.model", "User", "get", "(Authentication)", "summary", "df-generated"] + - ["hudson.model", "User", "getAll", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getProjects", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "User", "getTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUnknown", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUserDetailsForImpersonation", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUserFolder", "()", "summary", "df-generated"] + - ["hudson.model", "User", "idStrategy", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate2", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate", "(UserDetails)", "summary", "df-generated"] + - ["hudson.model", "User", "isIdOrFullnameAllowed", "(String)", "summary", "df-generated"] + - ["hudson.model", "User", "rekey", "()", "summary", "df-generated"] + - ["hudson.model", "User", "reload", "()", "summary", "df-generated"] + - ["hudson.model", "UserProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model", "UserPropertyDescriptor", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "UserPropertyDescriptor", "newInstance", "(User)", "summary", "df-generated"] + - ["hudson.model", "View$AsynchPeople", "getApi", "()", "summary", "df-generated"] + - ["hudson.model", "View$People", "isApplicable", "(Collection)", "summary", "df-generated"] + - ["hudson.model", "View$UserInfo", "getLastChangeTimeString", "()", "summary", "df-generated"] + - ["hudson.model", "View$UserInfo", "getTimeSortKey", "()", "summary", "df-generated"] + - ["hudson.model", "View", "all", "()", "summary", "df-generated"] + - ["hudson.model", "View", "allInstantiable", "()", "summary", "df-generated"] + - ["hudson.model", "View", "contains", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "View", "doCheckJobName", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "doConfigDotXml", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "View", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doCreateItem", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doItemCategories", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "getAllItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getAllProperties", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getApplicablePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getApproximateQueueItemsQuickly", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getColumns", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getComputers", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getIndenter", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getItem", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "getItemCreatePermission", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getNewPronoun", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getOwnerPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getPostConstructLandingPage", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getQueueItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getTimeline", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getVisiblePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getWidgets", "()", "summary", "df-generated"] + - ["hudson.model", "View", "hasPeople", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isAutomaticRefreshEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isDefault", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isEditable", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isFilterExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isFilterQueue", "()", "summary", "df-generated"] + - ["hudson.model", "View", "onJobRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model", "View", "registerPermissions", "()", "summary", "df-generated"] + - ["hudson.model", "View", "rename", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "updateByXml", "(Source)", "summary", "df-generated"] + - ["hudson.model", "View", "updateTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "View", "writeXml", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "doAutoCompleteCopyNewItemFrom", "(String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getColumnsDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getJobFiltersDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getNewViewDetailPage", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isApplicableIn", "(ViewGroup)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isInstantiable", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "canDelete", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "deleteView", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getAllViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getItemGroup", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getView", "(String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViewActions", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "onViewRenamed", "(View,String,String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "canDelete", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "deleteView", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getView", "(String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "onViewRenamed", "(View,String,String)", "summary", "df-generated"] + - ["hudson.model", "ViewProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ViewPropertyDescriptor", "isEnabledFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewPropertyDescriptor", "newInstance", "(View)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceBrowser", "getWorkspace", "(Job)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceCleanupThread", "invoke", "()", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "afterDelete", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "beforeUse", "(AbstractBuild,FilePath,BuildListener)", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractDiskSpaceMonitor", "getThresholdBytes", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractDiskSpaceMonitor", "markNodeOfflineIfDiskspaceIsTooLow", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "isIgnored", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ClockMonitor", "getDifferenceFor", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", "getFreeSpace", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", "install", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "getFreeSize", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "getGbLeft", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "parse", "(String)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "toHtml", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "toString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "AbstractNodeMonitorDescriptor_NoDataYet", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ArchitectureMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ClockMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitorDescriptor_DiskSpace_FreeSpace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitorDescriptor_DiskSpace_FreeSpaceTooLow", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_MarkedOnline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "MonitorMarkedNodeOffline_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_TimeOut", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "SwapSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "TemporarySpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_AbstractNodeMonitorDescriptor_NoDataYet", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ArchitectureMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ClockMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitorDescriptor_DiskSpace_FreeSpace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitorDescriptor_DiskSpace_FreeSpaceTooLow", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_MarkedOnline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_MonitorMarkedNodeOffline_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_TimeOut", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_SwapSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_TemporarySpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "MonitorOfflineCause", "getTrigger", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "all", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "data", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "getAll", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "getColumnCaption", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "isIgnored", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "setIgnored", "(boolean)", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "triggerUpdate", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "getAverage", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "hasTooManyTimeouts", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "toString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "MemoryUsage2", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getAvailablePhysicalMemory", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getAvailableSwapSpace", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getTotalPhysicalMemory", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getTotalSwapSpace", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor", "toHtml", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor", "toMB", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", "getFreeSpace", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", "install", "()", "summary", "df-generated"] + - ["hudson.os", "SU", "execute", "(TaskListener,String,String,Callable)", "summary", "df-generated"] + - ["hudson.os", "SU", "start", "(TaskListener,String,String)", "summary", "df-generated"] + - ["hudson.os", "WindowsUtil", "execCmd", "(String[])", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "ceil", "(long)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "checkSanity", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "floor", "(long)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "getTimeZone", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "toString", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "check", "(Calendar)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "checkSanity", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "create", "(String)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "create", "(String,Hash)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "next", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "previous", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabLexer", "CrontabLexer", "(CharStream)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "ExprContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "ExprContext", "(ParserRuleContext,int,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "OR", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "expr", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "term", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "ANNUALLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "AT", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "DAILY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "EOF", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "HOURLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "MIDNIGHT", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "MONTHLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "StartRuleContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WEEKLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WS", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WS", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "YEARLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "expr", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "expr", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "DIV", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "H", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "LPAREN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "MINUS", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "RPAREN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "STAR", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "TermContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "TermContext", "(ParserRuleContext,int,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "token", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "token", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TokenContext", "TOKEN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TokenContext", "TokenContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "CrontabParser", "(TokenStream)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "expr", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "term", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "token", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterStartRule", "(StartRuleContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterTerm", "(TermContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterToken", "(TokenContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitStartRule", "(StartRuleContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitTerm", "(TermContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitToken", "(TokenContext)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "from", "(String)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "next", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "zero", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_MustBePositive", "(Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_OutOfRange", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_StartEndReversed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTabList_InvalidInput", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_do_you_really_mean_every_minute_when_you", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_short_cycles_in_the_day_of_month_field_w", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_spread_load_evenly_by_using_rather_than_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_MustBePositive", "(Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_OutOfRange", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_StartEndReversed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTabList_InvalidInput", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_do_you_really_mean_every_minute_when_you", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_short_cycles_in_the_day_of_month_field_w", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_spread_load_evenly_by_using_rather_than_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "getTooltip", "()", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "isTagged", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "annotate", "(AbstractBuild,Entry,MarkupText)", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "annotate", "(Run,Entry,MarkupText)", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "register", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "unregister", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAffectedFiles", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAffectedPaths", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAuthor", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getCommitId", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsg", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsgAnnotated", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsgEscaped", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet", "getKind", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet", "isEmptySet", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "NullSCM_DisplayName", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "SCM_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "SCM_TagPermission_Description", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_NullSCM_DisplayName", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_SCM_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_SCM_TagPermission_Description", "()", "summary", "df-generated"] + - ["hudson.scm", "PollingResult", "PollingResult", "(Change)", "summary", "df-generated"] + - ["hudson.scm", "PollingResult", "hasChanges", "()", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowser", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowser", "getChangeSetLink", "(Entry)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "createInstance", "(Class,StaplerRequest,JSONObject,String)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "createInstance", "(Class,StaplerRequest,String)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "filter", "(Class)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_calcRevisionsFromBuild", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_for", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_for", "(Job)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "buildEnvVars", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "buildEnvironment", "(Run,Map)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "calcRevisionsFromBuild", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "calcRevisionsFromBuild", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "checkout", "(AbstractBuild,Launcher,FilePath,BuildListener,File)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "checkout", "(Run,Launcher,FilePath,TaskListener,File,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "createChangeLogParser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getBrowser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getKey", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getType", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "guessBrowser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "poll", "(AbstractProject,Launcher,FilePath,TaskListener,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "pollChanges", "(AbstractProject,Launcher,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "postCheckout", "(AbstractBuild,Launcher,FilePath,BuildListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "postCheckout", "(Run,Launcher,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "processWorkspaceBeforeDeletion", "(AbstractProject,FilePath,Node)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "processWorkspaceBeforeDeletion", "(Job,FilePath,Node)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "requiresWorkspaceForPolling", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "supportsPolling", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "getBrowserDescriptors", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "getGeneration", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "incrementGeneration", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isApplicable", "(Job)", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isBrowserReusable", "(SCM,SCM)", "summary", "df-generated"] + - ["hudson.scm", "SCMS", "parseSCM", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.scm", "SCMS", "parseSCM", "(StaplerRequest,AbstractProject)", "summary", "df-generated"] + - ["hudson.search", "Messages", "UserSearchProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.search", "Messages", "_UserSearchProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.search", "Search", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.search", "Search", "doSuggest", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "doSuggestOpenSearch", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "getSuggestions", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "suggest", "(SearchIndex,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "suggest", "(SearchIndex,String,SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchFactory", "all", "()", "summary", "df-generated"] + - ["hudson.search", "SearchFactory", "createFor", "(SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchIndex", "find", "(String,List)", "summary", "df-generated"] + - ["hudson.search", "SearchIndex", "suggest", "(String,List)", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchIndex", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchName", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchUrl", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String)", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String,SearchIndex)", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String,SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchResult", "hasMoreResults", "()", "summary", "df-generated"] + - ["hudson.search", "SearchableModelObject", "getSearch", "()", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "UserSearchProperty", "(boolean)", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "getInsensitiveSearch", "()", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "isCaseInsensitive", "()", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "all", "()", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "generateImage", "(String,OutputStream)", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "validateCaptcha", "(String,String)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbExclusion", "all", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbExclusion", "process", "(HttpServletRequest,HttpServletResponse,FilterChain)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbFilter", "getCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "all", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumb", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumb", "(ServletRequest)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumbRequestField", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "initStaplerCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest,MultipartFormDataParser)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest,String,String)", "summary", "df-generated"] + - ["hudson.security.csrf", "DefaultCrumbIssuer", "DefaultCrumbIssuer", "(boolean)", "summary", "df-generated"] + - ["hudson.security.csrf", "DefaultCrumbIssuer", "isExcludeClientIPFromCrumb", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "GlobalCrumbIssuerConfiguration", "createDefaultCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "GlobalCrumbIssuerConfiguration", "getCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "Messages", "DefaultCrumbIssuer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "Messages", "_DefaultCrumbIssuer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "ACL", "as2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "as", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "as", "(User)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkCreatePermission", "(ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkCreatePermission", "(ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission2", "(Authentication,ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission2", "(Authentication,ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission", "(Authentication,ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission", "(Authentication,ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission2", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication,Callable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication,Runnable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication,Callable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication,Runnable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "isAnonymous2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "isAnonymous", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "lambda2", "(BiFunction)", "summary", "df-generated"] + - ["hudson.security", "ACL", "lambda", "(BiFunction)", "summary", "df-generated"] + - ["hudson.security", "ACLContext", "getPreviousContext", "()", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "checkAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "getACL", "()", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission2", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException2", "report", "(PrintWriter)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException2", "reportAsHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException3", "report", "(PrintWriter)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException3", "reportAsHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson.security", "AuthenticationProcessingFilter2", "AuthenticationProcessingFilter2", "(String)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "all", "()", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(AbstractItem)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Cloud)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Computer)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Job)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Node)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(User)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(View)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getGroups", "()", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getRootACL", "()", "summary", "df-generated"] + - ["hudson.security", "CliAuthenticator", "authenticate", "()", "summary", "df-generated"] + - ["hudson.security", "ContainerAuthentication", "ContainerAuthentication", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "addTo", "(User)", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "addToCurrentUser", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getFullName", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getIdentifier", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getNickname", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getPronoun", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "locateUser", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "signin", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "toString", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "all", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "getUrlName", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "getUserPropertyClass", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", "has", "(String)", "summary", "df-generated"] + - ["hudson.security", "FullControlOnceLoggedInAuthorizationStrategy", "isAllowAnonymousRead", "()", "summary", "df-generated"] + - ["hudson.security", "FullControlOnceLoggedInAuthorizationStrategy", "setAllowAnonymousRead", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getAgentProtocols", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getAuthorizationStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getMarkupFormatter", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getSecurityRealm", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getSlaveAgentPort", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "isDisableRememberMe", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "isSlaveAgentPortEnforced", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getMembers", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getName", "()", "summary", "df-generated"] + - ["hudson.security", "HttpSessionContextIntegrationFilter2", "HttpSessionContextIntegrationFilter2", "(SecurityContextRepository)", "summary", "df-generated"] + - ["hudson.security", "HudsonFilter", "get", "(ServletContext)", "summary", "df-generated"] + - ["hudson.security", "HudsonFilter", "reset", "(SecurityRealm)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$DescriptorImpl", "doCheckAllowsSignup", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getAuthorities2", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getProtectedPassword", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isAccountNonExpired", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isAccountNonLocked", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isCredentialsNonExpired", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isPasswordCorrect", "(String)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$SignupInfo", "SignupInfo", "(FederatedIdentity)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$SignupInfo", "SignupInfo", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "HudsonPrivateSecurityRealm", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "createAccountByAdmin", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "createAccountFromSetupWizard", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccount", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccountByAdmin", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccountWithFederatedIdentity", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateFirstAccount", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "getAllUsers", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "getAllowsSignup", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "isEnableCaptcha", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "isMailerPluginPresent", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "load", "(String)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AccessDeniedException2_MissingPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AccessDeniedException_MissingPermissions", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "FullControlOnceLoggedInAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "GlobalSecurityConfiguration_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "GlobalSecurityConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_PasswordNotMatch", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_PasswordRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_TextNotMatchWordInImage", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameAlreadyTaken", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharacters", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharactersCustom", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_Details_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_Details_PasswordError", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_ManageUserLinks_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_ManageUserLinks_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_SignupWarning", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_WouldYouLikeToSignUp", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "LegacyAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "LegacySecurityRealm_Displayname", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "NoneSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "Permission_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "UserDetailsServiceProxy_UnableToQuery", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AccessDeniedException2_MissingPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AccessDeniedException_MissingPermissions", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_FullControlOnceLoggedInAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_GlobalSecurityConfiguration_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_GlobalSecurityConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_PasswordNotMatch", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_PasswordRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_TextNotMatchWordInImage", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameAlreadyTaken", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharacters", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharactersCustom", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_Details_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_Details_PasswordError", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_ManageUserLinks_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_ManageUserLinks_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_SignupWarning", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_WouldYouLikeToSignUp", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_LegacyAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_LegacySecurityRealm_Displayname", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_NoneSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_Permission_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_UserDetailsServiceProxy_UnableToQuery", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Permission", "fromId", "(String)", "summary", "df-generated"] + - ["hudson.security", "Permission", "getAll", "()", "summary", "df-generated"] + - ["hudson.security", "Permission", "getEnabled", "()", "summary", "df-generated"] + - ["hudson.security", "Permission", "isContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "Permission", "setEnabled", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "PermissionAdder", "add", "(AuthorizationStrategy,User,Permission)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "get", "(Class)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "getAll", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "getOwnerClassName", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "hasPermissionContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "size", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "toString", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionScope", "isContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", "SecurityComponents", "(AuthenticationManager)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "all", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "allowsSignup", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "canLogOut", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "commenceSignup", "(FederatedIdentity)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createCliAuthenticator", "(CLICommand)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createFilter", "(FilterConfig)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createSecurityComponents", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "doCaptcha", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "doLogout", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getAuthenticationGatewayUrl", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getCaptchaSupportDescriptors", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getFrom", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getGroupIdStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getLoginUrl", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getUserIdStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname2", "(String,boolean)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname", "(String)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname", "(String,boolean)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadUserByUsername2", "(String)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadUserByUsername", "(String)", "summary", "df-generated"] + - ["hudson.security", "SidACL", "newInheritingACL", "(SidACL)", "summary", "df-generated"] + - ["hudson.security", "SparseACL", "add", "(Sid,Permission,boolean)", "summary", "df-generated"] + - ["hudson.security", "TokenBasedRememberMeServices2", "TokenBasedRememberMeServices2", "(UserDetailsService)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException2", "UserMayOrMayNotExistException2", "(String)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException2", "UserMayOrMayNotExistException2", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "UserMayOrMayNotExistException", "(String)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "UserMayOrMayNotExistException", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "fromSpring", "(UserMayOrMayNotExistException2)", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getDetails", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getName", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getToString", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isAnonymous", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isAuthenticated", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isHeaderDangerous", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudImpl", "getInstanceCap", "()", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudImpl", "getInstanceCapStr", "()", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudSlave", "terminate", "()", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger$SetUpRemotePing", "SetUpRemotePing", "(int,int)", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger", "install", "(Channel)", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger", "setUpPingForChannel", "(Channel,SlaveComputer,int,int,boolean)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,InputStream,OutputStream,OutputStream,Proc)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,InputStream,OutputStream,Proc)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,Process,OutputStream)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "newJVM", "(String,TaskListener,FilePath,ClasspathBuilder,Map)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "newJVM", "(String,TaskListener,JVMBuilder,FilePath,ClasspathBuilder)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", "getAdditionalPlannedCapacity", "()", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "canProvision", "(CloudState)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "canProvision", "(Label)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "provision", "(CloudState,int)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "provision", "(Label,int)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "registerPermissions", "()", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "canProvision", "(Cloud,CloudState,int)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "canProvision", "(Cloud,Label,int)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onCommit", "(PlannedNode,Node)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onComplete", "(PlannedNode,Node)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onFailure", "(PlannedNode,Throwable)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onRollback", "(PlannedNode,Node,Throwable)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onStarted", "(Cloud,Label,Collection)", "summary", "df-generated"] + - ["hudson.slaves", "CloudRetentionStrategy", "CloudRetentionStrategy", "(int)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerConnector", "launch", "(String,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerConnectorDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "afterDisconnect", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "afterDisconnect", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "beforeDisconnect", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "beforeDisconnect", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "isLaunchSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "launch", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "launch", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onConfigurationChange", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onLaunchFailure", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOffline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOffline", "(Computer,OfflineCause)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOnline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOnline", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onTemporarilyOffline", "(Computer,OfflineCause)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onTemporarilyOnline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "preLaunch", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "preOnline", "(Computer,Channel,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "register", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher$DescriptorImpl", "applicableDescriptors", "(Slave,SlaveDescriptor)", "summary", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher$DescriptorImpl", "getApplicableDescriptors", "()", "summary", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$DescriptorImpl", "getHelpPage", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher$DescriptorImpl", "doCheckWebSocket", "(boolean,String)", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher$DescriptorImpl", "isWorkDirSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "JNLPLauncher", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "getInboundAgentUrl", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "isWebSocket", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "setWebSocket", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "Cloud_ProvisionPermission_Description", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_JavaVersionResult", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_NoJavaFound", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_UnknownJavaVersion", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_abortedLaunch", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_unexpectedError", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ConnectionActivityMonitor_OfflineCause", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "DumbSlave_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "EnvironmentVariablesNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_InstanceIdentityRequired", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_TCPPortDisabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_TunnelingNotSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_WebsocketNotEnabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "NodeDescriptor_CheckName_Mandatory", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "NodeProvisioner_EmptyString", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "OfflineCause_LaunchFailed", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "OfflineCause_connection_was_broken_", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Always_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Demand_OfflineIdle", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Demand_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SimpleScheduledRetentionStrategy_FinishedUpTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SimpleScheduledRetentionStrategy_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SlaveComputer_DisconnectedBy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_Cloud_ProvisionPermission_Description", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_JavaVersionResult", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_NoJavaFound", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_UnknownJavaVersion", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_abortedLaunch", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_unexpectedError", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ConnectionActivityMonitor_OfflineCause", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_DumbSlave_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_EnvironmentVariablesNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_InstanceIdentityRequired", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_TCPPortDisabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_TunnelingNotSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_WebsocketNotEnabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_NodeDescriptor_CheckName_Mandatory", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_NodeProvisioner_EmptyString", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_OfflineCause_LaunchFailed", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_OfflineCause_connection_was_broken_", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Always_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Demand_OfflineIdle", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Demand_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SimpleScheduledRetentionStrategy_FinishedUpTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SimpleScheduledRetentionStrategy_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SlaveComputer_DisconnectedBy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "allInstantiable", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "handleNewNodePage", "(ComputerSet,String,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "isInstantiable", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "newInstanceDetailPage", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeList$ConverterImpl", "ConverterImpl", "(XStream)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "buildEnvVars", "(EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "canTake", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "canTake", "(Task)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "for_", "(Node)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "setUp", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.slaves", "NodePropertyDescriptor", "isApplicableAsGlobal", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", "spent", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$Strategy", "apply", "(StrategyState)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getAdditionalPlannedCapacity", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getAvailableExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getBusyExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getConnectingExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getDefinedExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getOnlineExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getPlannedCapacityLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getPlannedCapacitySnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getQueueLengthLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getQueueLengthSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getTotalLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getTotalSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "recordPendingLaunches", "(Collection)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "recordPendingLaunches", "(PlannedNode[])", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", "suggestReviewNow", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", "toString", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$LaunchFailed", "toString", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause", "getTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "Demand", "(long,long)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "getIdleDelay", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "getInDemandDelay", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "check", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "isAcceptingTasks", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "isManualLaunchAllowed", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "start", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy$DescriptorImpl", "doCheck", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", "getUpTimeMins", "()", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", "isKeepUpWhenActive", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "doDoDisconnect", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "doSubmitDescription", "(StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getChannelToMaster", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingPrefetchCacheCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getEnvVarsFull", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getJnlpMac", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getOSDescription", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getResourceLoadingCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getResourceLoadingTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getSlaveVersion", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getSystemInfoExtensions", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setAcceptingTasks", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(ChannelBuilder,CommandTransport,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(InputStream,OutputStream,OutputStream,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(InputStream,OutputStream,TaskListener,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "tryReconnect", "()", "summary", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", "release", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver$DescriptorImpl", "doCheckArtifacts", "(AbstractProject,String,String)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "getAllowEmptyArchive", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isCaseSensitive", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isDefaultExcludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isFingerprint", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isFollowSymlinks", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isLatestOnly", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setAllowEmptyArchive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setCaseSensitive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setFingerprint", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setFollowSymlinks", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setOnlyIfSuccessful", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile$DescriptorImpl", "doCheckUnstableReturn", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile$DescriptorImpl", "getApplicableLocalRules", "()", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile", "getUnstableReturn", "()", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile", "setUnstableReturn", "(Integer)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getProjectAction", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getProjectActions", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getRequiredMonitorService", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "perform", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "prebuild", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "getProjectAction", "(Project)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "perform", "(Build,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "prebuild", "(Build,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepMonitor", "perform", "(BuildStep,AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "doAutoCompleteChildProjects", "(String,Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "doCheck", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "showEvenIfUnstableOption", "(Class)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "execute", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "execute", "(AbstractBuild,BuildListener,BuildTrigger)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildJobs", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "hasSame", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "hasSame", "(Collection)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper$Environment", "tearDown", "(Build,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "getProjectAction", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "getProjectActions", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "makeBuildVariables", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "makeSensitiveBuildVariables", "(AbstractBuild,Set)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "preCheckout", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "setUp", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapperDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrappers", "getFor", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "Builder", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", "buildCommandLine", "(FilePath)", "summary", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", "perform", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$DescriptorImpl", "doCheck", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$DescriptorImpl", "doCheckTargets", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "add", "(Map)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "getDependencies", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "getDependencies", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getCaseSensitive", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getDefaultExcludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getRecordBuildArtifacts", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "setCaseSensitive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "setDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(String,String,String,String)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(int,int)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(int,int,int,int)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactDaysToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactDaysToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactNumToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactNumToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getDaysToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getDaysToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getNumToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getNumToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "parse", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "getDefaultGlobalSettingsProvider", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "getDefaultSettingsProvider", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "setInstallations", "(MavenInstallation[])", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "getExecutable", "(Launcher)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "getExists", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "isMaven2_1", "(Launcher)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "meetsMavenReqVersion", "(Launcher,int)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$ProjectWithMaven", "inferMavenInstallation", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "getMaven", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "isInjectBuildVariables", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "setUsePrivateRepository", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "usesPrivateRepository", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ExecutableNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_GlobalConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_NotAntDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ProjectConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_ARCHIVING_ARTIFACTS", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_NoIncludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_NoMatchFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_SkipBecauseOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_InQueue", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NoProjectSpecified", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NoSuchProject", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NotBuildable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_Triggering", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_ok_ancestor_is_null", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_you_have_no_permission_to_build_", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_CommandFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_UnableToDelete", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_UnableToProduceScript", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Aborted", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Action_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_DigestFailed", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Failed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_FailedFor", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Recording", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "InstallFromApache", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName_Generic", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_NoMatchFound", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_Publishing", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_UnableToCopy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_NoExecutable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_NotMavenDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "TestJavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ExecutableNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_GlobalConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_NotAntDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ProjectConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_ARCHIVING_ARTIFACTS", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_NoIncludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_NoMatchFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_SkipBecauseOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_InQueue", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NoProjectSpecified", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NoSuchProject", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NotBuildable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_Triggering", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_ok_ancestor_is_null", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_you_have_no_permission_to_build_", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_CommandFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_UnableToDelete", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_UnableToProduceScript", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Aborted", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Action_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_DigestFailed", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Failed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_FailedFor", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Recording", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_InstallFromApache", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName_Generic", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_NoMatchFound", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_Publishing", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_UnableToCopy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_NoExecutable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_NotMavenDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_TestJavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Publisher", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "Publisher", "needsToRunAfterFinalized", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "doCheckShell", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "doCheckUnstableReturn", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "getApplicableLocalRules", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell", "getUnstableReturn", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell", "setUnstableReturn", "(Integer)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "findAvatarFor", "(User,int,int)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "resolve", "(User,String)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "resolveOrNull", "(User,String)", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "findNameFor", "(User)", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "resolve", "(User)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller$Descriptor", "doCheckCommand", "(String)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller$Descriptor", "doCheckToolHome", "(String)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", "getCommandCall", "(FilePath)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", "getCommandFileExtension", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller$DescriptorImpl", "createDownloadable", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller$DescriptorImpl", "getInstallables", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller", "getInstallable", "()", "summary", "df-generated"] + - ["hudson.tools", "InstallSourceProperty", "InstallSourceProperty", "(List)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "BatchCommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CannotBeInstalled", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_no_command", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_no_toolHome", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "InstallSourceProperty_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ToolDescriptor_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ToolLocationNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_bad_connection", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_could_not_connect", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_malformed_url", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_BatchCommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CannotBeInstalled", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_no_command", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_no_toolHome", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_InstallSourceProperty_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ToolDescriptor_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ToolLocationNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_bad_connection", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_could_not_connect", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_malformed_url", "()", "summary", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "doCheckHome", "(File)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getDefaultInstallers", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getDefaultProperties", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getPropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallation", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallation", "buildEnvVars", "(EnvVars)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstaller", "appliesTo", "(Node)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstaller", "performInstallation", "(ToolInstallation,Node,TaskListener)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "doAutoCompleteLabel", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "doCheckLabel", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "for_", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$DescriptorImpl", "getToolDescriptors", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", "getToolHome", "(Node,ToolInstallation,TaskListener)", "summary", "df-generated"] + - ["hudson.tools", "ToolProperty", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolProperty", "type", "()", "summary", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller$DescriptorImpl", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_AdministrativeMonitorImpl_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_BuildAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_SCMTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_getDisplayName", "(Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_no_schedules_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_no_schedules_no_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SlowTriggerAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_MissingWhitespace", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_TimerTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_no_schedules_so_will_never_run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_the_specified_cron_tab_is_rare_or_impossible", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_would_last_have_run_at_would_next_run_at", "(Object,Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "Trigger_init", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_AdministrativeMonitorImpl_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_BuildAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_SCMTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_getDisplayName", "(Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_no_schedules_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_no_schedules_no_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SlowTriggerAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_MissingWhitespace", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_TimerTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_no_schedules_so_will_never_run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_the_specified_cron_tab_is_rare_or_impossible", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_would_last_have_run_at_would_next_run_at", "(Object,Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_Trigger_init", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "doPollingLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "getPollingLogFile", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "writePollingLogTo", "(long,XMLOutput)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "clogCheck", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "doCheckPollingThreadCount", "(String)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "doCheckScmpoll_spec", "(String,boolean,Item)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getItemsBeingPolled", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getPollingThreadCount", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getRunners", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "isClogged", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "isPollingThreadCountOptionVisible", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "setPollingThreadCount", "(int)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getDuration", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getLogFile", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getStartTime", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getTarget", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getItem", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getLog", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getOwner", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "writeLogTo", "(XMLOutput)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", "SCMTriggerCause", "(File)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "isIgnorePostCommitHooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "run", "(Action[])", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "setIgnorePostCommitHooks", "(boolean)", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "doRun", "()", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "getLogsRoot", "()", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "of", "(ExceptionRunnable)", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getDuration", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getTimeString", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getTrigger", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "clear", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "doClear", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "getInstance", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "report", "(Class,String,long)", "summary", "df-generated"] + - ["hudson.triggers", "TimerTrigger$DescriptorImpl", "doCheck", "(String,Item)", "summary", "df-generated"] + - ["hudson.triggers", "TimerTrigger$DescriptorImpl", "doCheckSpec", "(String,Item)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "all", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "checkTriggers", "(Calendar)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "for_", "(Item)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "getProjectAction", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "getProjectActions", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "stop", "()", "summary", "df-generated"] + - ["hudson.triggers", "TriggerDescriptor", "isApplicable", "(Item)", "summary", "df-generated"] + - ["hudson.triggers", "Triggers", "getApplicableTriggers", "(Item)", "summary", "df-generated"] + - ["hudson.util.io", "Archiver", "countEntries", "()", "summary", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", "create", "(OutputStream)", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "all", "()", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "applyConfiguration", "(SAXReader,Object)", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "configure", "(SAXReader,Object)", "summary", "df-generated"] + - ["hudson.util.io", "ReopenableFileOutputStream", "rewind", "()", "summary", "df-generated"] + - ["hudson.util.io", "ReopenableRotatingFileOutputStream", "deleteAll", "()", "summary", "df-generated"] + - ["hudson.util.io", "RewindableFileOutputStream", "rewind", "()", "summary", "df-generated"] + - ["hudson.util.io", "RewindableRotatingFileOutputStream", "deleteAll", "()", "summary", "df-generated"] + - ["hudson.util.jna", "DotNet", "isInstalled", "(int,int)", "summary", "df-generated"] + - ["hudson.util.jna", "DotNet", "isInstalled", "(int,int,String,IJIAuthInfo)", "summary", "df-generated"] + - ["hudson.util.jna", "InitializationErrorInvocationHandler", "create", "(Class,Throwable)", "summary", "df-generated"] + - ["hudson.util.jna", "JnaException", "JnaException", "(int)", "summary", "df-generated"] + - ["hudson.util.jna", "JnaException", "getErrorCode", "()", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "createSymbolicLink", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "getTempDir", "()", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "getWin32FileAttributes", "(File)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "isJunctionOrSymlink", "(File)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "waitForExitProcess", "(Pointer)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "delete", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "deleteValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "dispose", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getIntValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getStringValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getSubKeys", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getValues", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "setValue", "(String,String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "setValue", "(String,int)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "valueExists", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "WinIOException", "WinIOException", "(Throwable)", "summary", "df-generated"] + - ["hudson.util.jna", "WinIOException", "getErrorCode", "()", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableListConverter", "ImmutableListConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableListConverter", "ImmutableListConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableMapConverter", "ImmutableMapConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableMapConverter", "ImmutableMapConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSetConverter", "ImmutableSetConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSetConverter", "ImmutableSetConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSortedSetConverter", "ImmutableSortedSetConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSortedSetConverter", "ImmutableSortedSetConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "all", "()", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "get", "(Message,Object)", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "getText", "(Message,Object)", "summary", "df-generated"] + - ["hudson.util", "Area", "Area", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Area", "area", "()", "summary", "df-generated"] + - ["hudson.util", "Area", "parse", "(String)", "summary", "df-generated"] + - ["hudson.util", "Area", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "hasMaskedArguments", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toMaskArray", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toWindowsCommand", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toWindowsCommand", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "AtomicFileWriter", "abort", "()", "summary", "df-generated"] + - ["hudson.util", "AtomicFileWriter", "commit", "()", "summary", "df-generated"] + - ["hudson.util", "BootFailure", "publish", "(ServletContext,File)", "summary", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", "ByteArrayOutputStream2", "(int)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "adjustChebyshev", "(CategoryDataset,NumberAxis)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateClickableMap", "(StaplerRequest,StaplerResponse,JFreeChart,Area)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateClickableMap", "(StaplerRequest,StaplerResponse,JFreeChart,int,int)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateGraph", "(StaplerRequest,StaplerResponse,JFreeChart,Area)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateGraph", "(StaplerRequest,StaplerResponse,JFreeChart,int,int)", "summary", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", "finish", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "ClockDifference", "(long)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "abs", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "isDangerous", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "(ClockDifference)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "(Node)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "ColorPalette", "apply", "(LineAndShapeRenderer)", "summary", "df-generated"] + - ["hudson.util", "ComboBoxModel", "ComboBoxModel", "(int)", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "compress", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "loadAsString", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "read", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "write", "()", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "ConsistentHash", "(int)", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "countAllPoints", "()", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "list", "(String)", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "list", "(int)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "contains", "(Object)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "remove", "(Object)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "size", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Hash$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "DataSetBuilder", "build", "()", "summary", "df-generated"] + - ["hudson.util", "DescribableList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "buildDependencyGraph", "(AbstractProject,DependencyGraph)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "contains", "(Descriptor)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuild", "(StaplerRequest,JSONObject,List)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuild", "(StaplerRequest,JSONObject,List,String)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuildHetero", "(StaplerRequest,JSONObject,Collection,String)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "remove", "(Descriptor)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "replace", "(Describable)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "DescriptorList", "(Class)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "DescriptorList", "(Descriptor[])", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "load", "(Class)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "newInstanceFromRadioList", "(JSONObject)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "newInstanceFromRadioList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson.util", "DirScanner", "scan", "(File,FileVisitor)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "doIgnore", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "getId", "()", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "init", "()", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "schedule", "()", "summary", "df-generated"] + - ["hudson.util", "EditDistance", "editDistance", "(String,String)", "summary", "df-generated"] + - ["hudson.util", "ErrorObject", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "understandsSymlink", "()", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "visit", "(File,String)", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "visitSymlink", "(File,String,String)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "applyResponse", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "isApply", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "success", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "errorWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "()", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "okWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "process", "()", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "respond", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warningWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "getKind", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "isSelectionCleared", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "renderHtml", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "respond", "(Kind,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation$FileValidator", "validate", "(File)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "()", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "renderHtml", "()", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "respond", "(Kind,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateBase64", "(String,boolean,boolean,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateExecutable", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateExecutable", "(String,FileValidator)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateIntegerInRange", "(String,int,int)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateNonNegativeInteger", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validatePositiveInteger", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateRequired", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "Futures", "precomputed", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Graph", "doMap", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "Graph", "doPng", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "Graph", "safeDimension", "(int,int,int,int)", "summary", "df-generated"] + - ["hudson.util", "HeadBufferingStream", "HeadBufferingStream", "(InputStream,int)", "summary", "df-generated"] + - ["hudson.util", "HeadBufferingStream", "fillSide", "()", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "okJSON", "()", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "okJSON", "(Map)", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "staticResource", "(File)", "summary", "df-generated"] + - ["hudson.util", "HudsonIsLoading", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "HudsonIsRestarting", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "IOException2", "IOException2", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.util", "IOException2", "IOException2", "(Throwable)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(Reader)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(Writer)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "contentEquals", "(InputStream,InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "contentEquals", "(Reader,Reader)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(File,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(InputStream,File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(Reader,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(Reader,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "drain", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "isAbsolute", "(String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "mkdirs", "(File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "mode", "(File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "toByteArray", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(String,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(String,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(StringBuffer,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(StringBuffer,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(char[],OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(char[],OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleAntVersionDetected", "IncompatibleAntVersionDetected", "(Class)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleAntVersionDetected", "getWhereAntIsLoaded", "()", "summary", "df-generated"] + - ["hudson.util", "IncompatibleServletVersionDetected", "IncompatibleServletVersionDetected", "(Class)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleServletVersionDetected", "getWhereServletIsLoaded", "()", "summary", "df-generated"] + - ["hudson.util", "IncompatibleVMDetected", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson.util", "InterceptingProxy", "wrap", "(Class,Object)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "empty", "()", "summary", "df-generated"] + - ["hudson.util", "Iterators", "limit", "(Iterator,CountingPredicate)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "readOnly", "(Iterator)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "removeDups", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverse", "(List)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverseSequence", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverseSequence", "(int,int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(Iterable[])", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(int,int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "skip", "(Iterator,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "wrap", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "KeyedDataStorage", "getPerformanceStats", "()", "summary", "df-generated"] + - ["hudson.util", "KeyedDataStorage", "resetPerformanceStats", "()", "summary", "df-generated"] + - ["hudson.util", "LRUStringConverter", "LRUStringConverter", "(int)", "summary", "df-generated"] + - ["hudson.util", "ListBoxModel", "ListBoxModel", "(int)", "summary", "df-generated"] + - ["hudson.util", "ListBoxModel", "writeTo", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "LogTaskListener", "LogTaskListener", "(Logger,Level)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Ahead", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Behind", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Failed", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_InSync", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormFieldValidator_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormValidation_Error_Details", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormValidation_ValidateRequired", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "HttpResponses_Saved", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Attempt", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_AttemptFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_CallingListener", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_ExceptionFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_ExceptionThrown", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Interruption", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_NoSuccess", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Sleeping", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Success", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Ahead", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Behind", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Failed", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_InSync", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormFieldValidator_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormValidation_Error_Details", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormValidation_ValidateRequired", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_HttpResponses_Saved", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Attempt", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_AttemptFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_CallingListener", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_ExceptionFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_ExceptionThrown", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Interruption", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_NoSuccess", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Sleeping", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Success", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "MultipartFormDataParser", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "cleanUp", "()", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "get", "(String)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "isMultiPartForm", "(String)", "summary", "df-generated"] + - ["hudson.util", "NoOverlapCategoryAxis", "NoOverlapCategoryAxis", "(String)", "summary", "df-generated"] + - ["hudson.util", "NoTempDir", "getTempDir", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "block", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "block", "(long)", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "isSignaled", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "signal", "()", "summary", "df-generated"] + - ["hudson.util", "PackedMap$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "PersistedList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "get", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "getAll", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "remove", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "removeAll", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "replace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "replaceBy", "(Collection)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "addFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "cleanUp", "()", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "hasFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "removeFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "ProcessKiller", "all", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessKiller", "kill", "(OSProcess)", "summary", "df-generated"] + - ["hudson.util", "ProcessKillingVeto", "all", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessKillingVeto", "vetoProcessKilling", "(IOSProcess)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$OSProcess", "getChildren", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$OSProcess", "hasMatchingEnvVars", "(Map)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$Remote", "Remote", "(ProcessTree,Channel)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$Remote", "Remote", "(ProcessTree,Channel,boolean)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "get", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "get", "(Process)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "killAll", "(Process,Map)", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "act", "(ProcessCallable)", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getArguments", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getEnvironmentVariables", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getParent", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getPid", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "kill", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "killRecursively", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IProcessTree", "killAll", "(Map)", "summary", "df-generated"] + - ["hudson.util", "Protector", "protect", "(String)", "summary", "df-generated"] + - ["hudson.util", "Protector", "unprotect", "(String)", "summary", "df-generated"] + - ["hudson.util", "QueryParameterMap", "QueryParameterMap", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.util", "QueryParameterMap", "QueryParameterMap", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "convertHexDigit", "(byte)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "getDouble", "()", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "getSingle", "()", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "quote", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "quote", "(StringBuffer,String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "setDouble", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "setSingle", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "tokenize", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "tokenize", "(String,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "annotation", "(Class)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "index", "()", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "type", "()", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getPublicMethodNamed", "(Class,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getPublicProperty", "(Object,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getVmDefaultValueForPrimitiveType", "(Class)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "doHeapDump", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "doIndex", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "obtain", "()", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "executeGroovy", "(String,VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getHeapDump", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getSystemProperties", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getThreadDump", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getThreadDumpAsync", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "Retrier", "start", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "RingBufferLogHandler", "(int)", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "getDefaultRingBufferSize", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "getView", "()", "summary", "df-generated"] + - ["hudson.util", "RobustCollectionConverter", "RobustCollectionConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util", "RobustCollectionConverter", "RobustCollectionConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util", "RobustReflectionConverter$DuplicateFieldException", "DuplicateFieldException", "(String)", "summary", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", "addErrorInContext", "(UnmarshallingContext,Throwable)", "summary", "df-generated"] + - ["hudson.util", "RunList", "RunList", "(Collection)", "summary", "df-generated"] + - ["hudson.util", "RunList", "RunList", "(View)", "summary", "df-generated"] + - ["hudson.util", "RunList", "fromJobs", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "Secret", "getCipher", "(String)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "SecretRewriter", "(File)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "rewrite", "(File)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "rewrite", "(File,File)", "summary", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", "isStarving", "(long)", "summary", "df-generated"] + - ["hudson.util", "Service", "load", "(Class,ClassLoader,Collection)", "summary", "df-generated"] + - ["hudson.util", "Service", "loadInstances", "(ClassLoader,Class)", "summary", "df-generated"] + - ["hudson.util", "ShiftedCategoryAxis", "ShiftedCategoryAxis", "(String)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File,Charset)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File,boolean,Charset)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(Writer)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "closeQuietly", "()", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "fromStderr", "()", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "fromStdout", "()", "summary", "df-generated"] + - ["hudson.util", "TableNestChecker", "TableNestChecker", "(ContentHandler)", "summary", "df-generated"] + - ["hudson.util", "TableNestChecker", "applyTo", "(XMLOutput)", "summary", "df-generated"] + - ["hudson.util", "TagCloud$Entry", "getClassName", "()", "summary", "df-generated"] + - ["hudson.util", "TagCloud$Entry", "scale", "()", "summary", "df-generated"] + - ["hudson.util", "TagCloud", "TagCloud", "(Iterable,WeightFunction)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "delete", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "exists", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "fastTail", "(int)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "fastTail", "(int,Charset)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "head", "(int)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "lines", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "read", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "readTrim", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "write", "(String)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "convert", "(long,TimeUnit)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "convert", "(long,TimeUnit2)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "sleep", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "timedJoin", "(Thread,long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "timedWait", "(Object,long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toDays", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toHours", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMicros", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMillis", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMinutes", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toNanos", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toSeconds", "(long)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "XStream2", "(HierarchicalStreamDriver)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "XStream2", "(ReflectionProvider,HierarchicalStreamDriver,ClassLoaderReference,Mapper,ConverterLookup,ConverterRegistry)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "addCriticalField", "(Class,String)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "getDefaultDriver", "()", "summary", "df-generated"] + - ["hudson.util", "XStream2", "toXMLUTF8", "(Object,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "unmarshal", "(HierarchicalStreamReader,Object,DataHolder,boolean)", "summary", "df-generated"] + - ["hudson.util", "XStream2SecurityUtils", "checkForCollectionDoSAttack", "(UnmarshallingContext,long)", "summary", "df-generated"] + - ["hudson.views", "BuildButtonColumn", "taskNoun", "(Object)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "all", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "(Class)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "(View)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "getColumnCaption", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "shownByDefault", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumnDescriptor", "shownByDefault", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "BuildButtonColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "DefaultMyViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "DefaultViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "GlobalDefaultViewConfiguration_ViewDoesNotExist", "(Object)", "summary", "df-generated"] + - ["hudson.views", "Messages", "JobColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastDurationColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastFailureColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastStableColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastSuccessColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "StatusColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "StatusFilter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "WeatherColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_BuildButtonColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_DefaultMyViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_DefaultViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_GlobalDefaultViewConfiguration_ViewDoesNotExist", "(Object)", "summary", "df-generated"] + - ["hudson.views", "Messages", "_JobColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastDurationColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastFailureColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastStableColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastSuccessColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_StatusColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_StatusFilter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_WeatherColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "MyViewsTabBar$GlobalConfigurationImpl", "getMyViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.views", "MyViewsTabBar", "all", "()", "summary", "df-generated"] + - ["hudson.views", "StatusFilter", "StatusFilter", "(boolean)", "summary", "df-generated"] + - ["hudson.views", "StatusFilter", "getStatusFilter", "()", "summary", "df-generated"] + - ["hudson.views", "ViewJobFilter", "all", "()", "summary", "df-generated"] + - ["hudson.views", "ViewJobFilter", "filter", "(List,List,View)", "summary", "df-generated"] + - ["hudson.views", "ViewsTabBar$GlobalConfigurationImpl", "getViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.views", "ViewsTabBar", "all", "()", "summary", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", "getQueuedItem", "()", "summary", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", "getQueuedItems", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "isTrimmed", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "setTrimmed", "(boolean)", "summary", "df-generated"] + - ["hudson.widgets", "Messages", "BuildHistoryWidget_DisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "Messages", "_BuildHistoryWidget_DisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "RenderOnDemandClosure", "RenderOnDemandClosure", "(JellyContext,String)", "summary", "df-generated"] + - ["hudson.widgets", "RenderOnDemandClosure", "render", "()", "summary", "df-generated"] + - ["hudson.widgets", "Widget", "getUrlName", "()", "summary", "df-generated"] + - ["hudson", "AboutJenkins", "getLicensesURL", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addHyperlink", "(int,int,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addHyperlinkLowKey", "(int,int,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addMarkup", "(int,int,String,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "charAt", "(int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "findToken", "(Pattern)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "findTokens", "(Pattern)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "getText", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "hide", "(int,int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "length", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "subText", "(int,int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "wrapBy", "(String,String)", "summary", "df-generated"] + - ["hudson", "BulkChange", "abort", "()", "summary", "df-generated"] + - ["hudson", "BulkChange", "commit", "()", "summary", "df-generated"] + - ["hudson", "BulkChange", "contains", "(Saveable)", "summary", "df-generated"] + - ["hudson", "BulkChange", "current", "()", "summary", "df-generated"] + - ["hudson", "ClassicPluginStrategy", "getImpliedDependencies", "(String,String)", "summary", "df-generated"] + - ["hudson", "ClassicPluginStrategy", "startPlugin", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "DependencyRunner$ProjectRunnable", "run", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "clearLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "listLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "newInstanceFromRadioList", "(JSONObject)", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "newInstanceFromRadioList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson", "EnvVars", "createCookie", "()", "summary", "df-generated"] + - ["hudson", "EnvVars", "getPlatform", "()", "summary", "df-generated"] + - ["hudson", "EnvVars", "getRemote", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson", "EnvVars", "putAllNonNull", "(Map)", "summary", "df-generated"] + - ["hudson", "EnvVars", "resolve", "(Map)", "summary", "df-generated"] + - ["hudson", "EnvVars", "setPlatform", "(Platform)", "summary", "df-generated"] + - ["hudson", "ExtensionComponent", "isDescriptorOf", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionComponent", "ordinal", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "_find", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "find", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "findExtensions", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "isRefreshable", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "refresh", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "scout", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "clearLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "ExtensionList", "get", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "getInstance", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "lookup", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "lookupSingleton", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "refresh", "(ExtensionComponentSet)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "reverseView", "()", "summary", "df-generated"] + - ["hudson", "ExtensionListListener", "onChange", "()", "summary", "df-generated"] + - ["hudson", "ExtensionListView", "createCopyOnWriteList", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionListView", "createList", "(Class)", "summary", "df-generated"] + - ["hudson", "FilePath$FileCallableWrapperFactory", "wrap", "(DelegatingCallable)", "summary", "df-generated"] + - ["hudson", "FilePath$TarCompression", "compress", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath$TarCompression", "extract", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "FilePath", "(File)", "summary", "df-generated"] + - ["hudson", "FilePath", "act", "(Callable)", "summary", "df-generated"] + - ["hudson", "FilePath", "actAsync", "(FileCallable)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,DirScanner,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "chmod", "(int)", "summary", "df-generated"] + - ["hudson", "FilePath", "containsSymlink", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(FileItem)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(URL)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(DirScanner,FilePath,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(String,FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(String,String,FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyToWithPermission", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "createZipArchive", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "createZipArchive", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "delete", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteContents", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteRecursive", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteSuffixesRecursive", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "exists", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getFreeDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getHomeDirectory", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson", "FilePath", "getTotalDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getUsableDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "hasSymlink", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "installIfNecessaryFrom", "(URL,TaskListener,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "isDescendant", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "isDirectory", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "isRemote", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "isSymlink", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "lastModified", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "length", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "listDirectories", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "mkdirs", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "mode", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "moveAllChildrenTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "read", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "read", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "readFromOffset", "(long)", "summary", "df-generated"] + - ["hudson", "FilePath", "renameTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "symlinkTo", "(String,TaskListener)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "toComputer", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "touch", "(long)", "summary", "df-generated"] + - ["hudson", "FilePath", "untar", "(FilePath,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "untarFrom", "(InputStream,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "unzip", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "unzipFrom", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(FilePath,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(FilePath,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String,boolean,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativeDirectory", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativeDirectory", "(String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativePath", "(String,boolean,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "write", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "write", "(String,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,DirScanner,String,boolean,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "discardWorkspace", "(AbstractProject,FilePath)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "prepareWorkspace", "(AbstractBuild,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "snapshot", "(AbstractBuild,FilePath,String,TaskListener)", "summary", "df-generated"] + - ["hudson", "Functions", "adminCheck", "(StaplerRequest,StaplerResponse,Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "advertiseHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson", "Functions", "checkAnyPermission", "(AccessControlled,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "checkAnyPermission", "(Object,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(AccessControlled,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "configureAutoRefresh", "(HttpServletRequest,HttpServletResponse,boolean)", "summary", "df-generated"] + - ["hudson", "Functions", "createRenderOnDemandProxy", "(JellyContext,String)", "summary", "df-generated"] + - ["hudson", "Functions", "defaultToTrue", "(Boolean)", "summary", "df-generated"] + - ["hudson", "Functions", "determineRows", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "dumpAllThreads", "()", "summary", "df-generated"] + - ["hudson", "Functions", "emptyList", "()", "summary", "df-generated"] + - ["hudson", "Functions", "escape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "generateConsoleAnnotationScriptAndStylesheet", "()", "summary", "df-generated"] + - ["hudson", "Functions", "generateId", "()", "summary", "df-generated"] + - ["hudson", "Functions", "generateItemId", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getAllTopLevelItems", "(ItemGroup)", "summary", "df-generated"] + - ["hudson", "Functions", "getAuthorizationStrategyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getAvatar", "(User,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getBuildWrapperDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getBuilderDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getCLICommands", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCaptchaSupportDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCloudDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getComputerLauncherDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCookie", "(HttpServletRequest,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumb", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumbIssuerDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumbRequestField", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentDescriptorByNameUrl", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentJellyContext", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentLocale", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentTime", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getDiffString2", "(int)", "summary", "df-generated"] + - ["hudson", "Functions", "getDiffString", "(int)", "summary", "df-generated"] + - ["hudson", "Functions", "getEnvVars", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getFooterURL", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getGlobalNodePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getHourLocalTimezone", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getIconFilePath", "(Action)", "summary", "df-generated"] + - ["hudson", "Functions", "getIsUnitTest", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getJDKDescriptor", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getJobPropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson", "Functions", "getJobPropertyDescriptors", "(Job)", "summary", "df-generated"] + - ["hudson", "Functions", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getLoggerNames", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getMyViewsTabBarDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getNodeModes", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getNodePropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson", "Functions", "getPageDecorators", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getParameterDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getPublisherDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getRelativeLinkTo", "(Item)", "summary", "df-generated"] + - ["hudson", "Functions", "getRequestHeaders", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "getResourcePath", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getRetentionStrategyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSCMDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getScreenResolution", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSearchURL", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSecurityRealmDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getServerName", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSimplePageDecorator", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSimplePageDecorators", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfig", "(Predicate)", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigByDescriptor", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigByDescriptor", "(Predicate)", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigNoSecurity", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigUnclassified", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigUnclassifiedReadable", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSystemProperty", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "getThreadInfos", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getTimeSpanString", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "getTypeParameter", "(Class,Class,int)", "summary", "df-generated"] + - ["hudson", "Functions", "getUserAvatar", "(User,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getUserTimeZone", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getUserTimeZonePostfix", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getVersion", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getViewsTabBarDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getWin32ErrorMessage", "(IOException)", "summary", "df-generated"] + - ["hudson", "Functions", "getYuiSuffix", "()", "summary", "df-generated"] + - ["hudson", "Functions", "hasAnyPermission", "(AccessControlled,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "hasAnyPermission", "(Object,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "hasPermission", "(Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "hasView", "(Object,String)", "summary", "df-generated"] + - ["hudson", "Functions", "htmlAttributeEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "humanReadableByteSize", "(long)", "summary", "df-generated"] + - ["hudson", "Functions", "hyperlinkMatchesCurrentPage", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "inferHudsonURL", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "initPageVariables", "(JellyContext)", "summary", "df-generated"] + - ["hudson", "Functions", "isAnonymous", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isArtifactsPermissionEnabled", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isAutoRefresh", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "isCollapsed", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "isContextMenuVisible", "(Action)", "summary", "df-generated"] + - ["hudson", "Functions", "isExtensionsAvailable", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isGlibcSupported", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isMatrixProject", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModel", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModelWithChildren", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModelWithContextMenu", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isMultiline", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "isMustangOrAbove", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isUserTimeZoneOverride", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isWindows", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isWipeOutPermissionEnabled", "()", "summary", "df-generated"] + - ["hudson", "Functions", "iso8601DateTime", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "jsStringEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "localDate", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "nbspIndent", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "printLogRecord", "(LogRecord)", "summary", "df-generated"] + - ["hudson", "Functions", "printLogRecordHtml", "(LogRecord,LogRecord)", "summary", "df-generated"] + - ["hudson", "Functions", "printStackTrace", "(Throwable,PrintStream)", "summary", "df-generated"] + - ["hudson", "Functions", "printStackTrace", "(Throwable,PrintWriter)", "summary", "df-generated"] + - ["hudson", "Functions", "restoreCurrentDescriptorByNameUrl", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "rfc822Date", "(Calendar)", "summary", "df-generated"] + - ["hudson", "Functions", "runScript", "(Script)", "summary", "df-generated"] + - ["hudson", "Functions", "setCurrentDescriptorByNameUrl", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "size2", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "sortThreadsAndGetGroupMap", "(ThreadInfo[])", "summary", "df-generated"] + - ["hudson", "Functions", "toCCStatus", "(Item)", "summary", "df-generated"] + - ["hudson", "Functions", "toEmailSafeString", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "tryGetIcon", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "urlEncode", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "useHidingPasswordFields", "()", "summary", "df-generated"] + - ["hudson", "Functions", "xmlEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "xsDate", "(Calendar)", "summary", "df-generated"] + - ["hudson", "Indenter", "getCss", "(Job)", "summary", "df-generated"] + - ["hudson", "Indenter", "getRelativeShift", "(Job)", "summary", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", "launchChannel", "(OutputStream,ProcessBuilder)", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "join", "()", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "masks", "()", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "quiet", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "getIOtriplet", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "isAlive", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "join", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "kill", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "getComputer", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "isUnix", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "kill", "(Map)", "summary", "df-generated"] + - ["hudson", "Launcher", "launch", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "launch", "(ProcStarter)", "summary", "df-generated"] + - ["hudson", "Launcher", "launchChannel", "(String[],OutputStream,FilePath,Map)", "summary", "df-generated"] + - ["hudson", "Launcher", "prepareFilterRules", "(Run,EnvVarsFilterableBuilder)", "summary", "df-generated"] + - ["hudson", "LauncherDecorator", "all", "()", "summary", "df-generated"] + - ["hudson", "LauncherDecorator", "decorate", "(Launcher,Node)", "summary", "df-generated"] + - ["hudson", "Lookup", "get", "(Class)", "summary", "df-generated"] + - ["hudson", "Main", "remotePost", "(String[])", "summary", "df-generated"] + - ["hudson", "Main", "run", "(String[])", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "SubText", "(Matcher,int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "SubText", "(int,int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "end", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "end", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "group", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "groupCount", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "href", "(String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "replace", "(String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "start", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "start", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "surroundWith", "(String,String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "surroundWithLiteral", "(String,String)", "summary", "df-generated"] + - ["hudson", "MarkupText", "addMarkup", "(int,String)", "summary", "df-generated"] + - ["hudson", "Messages", "AboutJenkins_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "AboutJenkins_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_TildaDoesntWork", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAnything", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAnythingAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_matchWithCaseInsensitive", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_portionMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_portionMatchButPreviousNotMatchAndSuggest", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_whitespaceSeparator", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_noSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_noSuchFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_notDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_notFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_wildcardNotAllowed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "Functions_NoExceptionDetails", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_CheckUpdateServerError", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_ConfigureUpdateCenterPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginCycleDependenciesMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginDeprecationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginDoesntSupportDynamicLoad_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginIsAlreadyInstalled_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PortNotANumber", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PortNotInRange", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UnexpectedException", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UpdateSiteChangeLogLevel", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UpdateSiteError", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UploadPluginsPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_adoptThisPlugin", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_ago", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_compatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_connectionFailed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_coreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_depCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_depCoreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_deprecationWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_emptyUpdateSiteUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_insecureUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_invalidUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_parentCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_parentDepCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_securityWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Already_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Error_Disabling", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_PluginWrapperAdministrativeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Plugin_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Plugin_Has_Dependent", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_disabled_2", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_failed_to_load_dependency_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_failed_to_load_plugin_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_missing", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_obsoleteCore", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_obsolete_2", "(Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_FailedToConnect", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_FailedToConnectViaProxy", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_MalformedTestUrl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_Success", "()", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_TestUrlRequired", "()", "summary", "df-generated"] + - ["hudson", "Messages", "TcpSlaveAgentListener_PingAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "Util_day", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_hour", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_millisecond", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_minute", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_month", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_second", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_year", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_AboutJenkins_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_AboutJenkins_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_TildaDoesntWork", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAnything", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAnythingAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_matchWithCaseInsensitive", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_portionMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_portionMatchButPreviousNotMatchAndSuggest", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_whitespaceSeparator", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_noSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_noSuchFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_notDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_notFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_wildcardNotAllowed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_Functions_NoExceptionDetails", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_CheckUpdateServerError", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_ConfigureUpdateCenterPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginCycleDependenciesMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginDeprecationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginDoesntSupportDynamicLoad_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginIsAlreadyInstalled_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PortNotANumber", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PortNotInRange", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UnexpectedException", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UpdateSiteChangeLogLevel", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UpdateSiteError", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UploadPluginsPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_adoptThisPlugin", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_ago", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_compatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_connectionFailed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_coreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_depCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_depCoreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_deprecationWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_emptyUpdateSiteUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_insecureUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_invalidUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_parentCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_parentDepCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_securityWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Already_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Error_Disabling", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_PluginWrapperAdministrativeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Plugin_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Plugin_Has_Dependent", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_disabled_2", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_failed_to_load_dependency_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_failed_to_load_plugin_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_missing", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_obsoleteCore", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_obsolete_2", "(Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_FailedToConnect", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_FailedToConnectViaProxy", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_MalformedTestUrl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_Success", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_TestUrlRequired", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_TcpSlaveAgentListener_PingAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_day", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_hour", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_millisecond", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_minute", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_month", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_second", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_year", "(Object)", "summary", "df-generated"] + - ["hudson", "Platform", "current", "()", "summary", "df-generated"] + - ["hudson", "Platform", "isDarwin", "()", "summary", "df-generated"] + - ["hudson", "Platform", "isSnowLeopardOrLater", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "configure", "(JSONObject)", "summary", "df-generated"] + - ["hudson", "Plugin", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson", "Plugin", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "Plugin", "postInitialize", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "setServletContext", "(ServletContext)", "summary", "df-generated"] + - ["hudson", "Plugin", "start", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginFirstClassLoader2", "PluginFirstClassLoader2", "(URL[],ClassLoader)", "summary", "df-generated"] + - ["hudson", "PluginManager$MetadataCache", "of", "(String,Class,Supplier)", "summary", "df-generated"] + - ["hudson", "PluginManager$PluginDeprecationMonitor", "getDeprecatedPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", "getInstance", "()", "summary", "df-generated"] + - ["hudson", "PluginManager$UberClassLoader", "toString", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "createCache", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "discover", "(Class)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckPluginUrl", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckUpdateSiteUrl", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckUpdatesServer", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstall", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallNecessaryPlugins", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallPlugins", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallPluginsDone", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPluginsSearch", "(String,Integer)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPrevalidateConfig", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doProxyConfigure", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doSiteConfigure", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doUpdateSources", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doUploadPlugin", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "dynamicLoad", "(File)", "summary", "df-generated"] + - ["hudson", "PluginManager", "getBundledPluginManifest", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "getProxyDescriptor", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "getUpdates", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "hasAdoptThisPluginLabel", "(Plugin)", "summary", "df-generated"] + - ["hudson", "PluginManager", "hasAdoptThisPluginLabel", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginManager", "initTasks", "(InitStrategy)", "summary", "df-generated"] + - ["hudson", "PluginManager", "install", "(Collection,boolean)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isMetaLabel", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isNonMetaLabel", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isPluginUploaded", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "parseRequestedPlugins", "(InputStream)", "summary", "df-generated"] + - ["hudson", "PluginManager", "prevalidateConfig", "(InputStream)", "summary", "df-generated"] + - ["hudson", "PluginManager", "resolveDependentPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "start", "(List)", "summary", "df-generated"] + - ["hudson", "PluginManager", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "unscientific", "(double)", "summary", "df-generated"] + - ["hudson", "PluginManagerStaplerOverride", "all", "()", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "findComponents", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "initializeComponents", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "load", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "updateDependency", "(PluginWrapper,PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", "getStatus", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", "setStatus", "(PluginDisableStatus)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableStrategy", "toString", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "get", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "hasAnyDerivedDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "disable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doDoUninstall", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doMakeDisabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doMakeEnabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doPin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doUnpin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "enable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getActiveWarnings", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getBackupVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getDeprecations", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getImpliedDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getIndexPage", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getInfo", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getIssueTrackerReportUrl", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPlugin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPluginClass", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPluginOrFail", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getRequiredCoreVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getUpdateInfo", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getUrl", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getVersionNumber", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasCycleDependency", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependants", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependencies", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDerivedDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasImpliedDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasLicensesXml", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasMandatoryDependencies", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasMandatoryDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOptionalDependants", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOptionalDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOriginalDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasUpdate", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "injectJarsToClasspath", "(File[])", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isActive", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isBundled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDeleted", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDeprecated", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDetached", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDowngradable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isEnabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isOlderThan", "(VersionNumber)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isPinned", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isPinningForcingOldVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "releaseClassLoader", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "setHasCycleDependency", "(boolean)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "setOptionalDependants", "(Set)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "supportsDynamicLoad", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStderr", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStdin", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStdout", "()", "summary", "df-generated"] + - ["hudson", "Proc", "isAlive", "()", "summary", "df-generated"] + - ["hudson", "Proc", "join", "()", "summary", "df-generated"] + - ["hudson", "Proc", "joinWithTimeout", "(long,TimeUnit,TaskListener)", "summary", "df-generated"] + - ["hudson", "Proc", "kill", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration$DescriptorImpl", "doCheckPort", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration$DescriptorImpl", "doValidateProxy", "(String,String,int,String,Secret,String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "(String,String,int,String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getInputStream", "(URL)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getNoProxyHostPatterns", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getNoProxyHostPatterns", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getPort", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getXmlFile", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "load", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpClient", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpClientBuilder", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpRequestBuilder", "(URI)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "open", "(URL)", "summary", "df-generated"] + - ["hudson", "StructuredForm", "toList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener$ConnectionFromCurrentPeer", "toString", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener$PingAgentProtocol", "connect", "(Socket)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "TcpSlaveAgentListener", "(int)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAdvertisedHost", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAdvertisedPort", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAgentProtocolNames", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getIdentityPublicKey", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getPort", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getRemotingMinimumVersion", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "shutdown", "()", "summary", "df-generated"] + - ["hudson", "URLConnectionDecorator", "all", "()", "summary", "df-generated"] + - ["hudson", "URLConnectionDecorator", "decorate", "(URLConnection)", "summary", "df-generated"] + - ["hudson", "Util", "closeAndLogFailures", "(Closeable,Logger,String,String)", "summary", "df-generated"] + - ["hudson", "Util", "copyFile", "(File,File)", "summary", "df-generated"] + - ["hudson", "Util", "createFileSet", "(File,String)", "summary", "df-generated"] + - ["hudson", "Util", "createFileSet", "(File,String,String)", "summary", "df-generated"] + - ["hudson", "Util", "createSubList", "(Collection,Class)", "summary", "df-generated"] + - ["hudson", "Util", "createSymlink", "(File,String,String,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "createTempDir", "()", "summary", "df-generated"] + - ["hudson", "Util", "daysBetween", "(Date,Date)", "summary", "df-generated"] + - ["hudson", "Util", "daysElapsedSince", "(Date)", "summary", "df-generated"] + - ["hudson", "Util", "deleteContentsRecursive", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteContentsRecursive", "(Path,PathChecker)", "summary", "df-generated"] + - ["hudson", "Util", "deleteFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteRecursive", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteRecursive", "(Path,PathChecker)", "summary", "df-generated"] + - ["hudson", "Util", "displayIOException", "(IOException,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "escape", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "filter", "(Iterable,Class)", "summary", "df-generated"] + - ["hudson", "Util", "filter", "(List,Class)", "summary", "df-generated"] + - ["hudson", "Util", "fromHexString", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(InputStream)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "getHostName", "()", "summary", "df-generated"] + - ["hudson", "Util", "getNearestAncestorOfTypeOrThrow", "(StaplerRequest,Class)", "summary", "df-generated"] + - ["hudson", "Util", "getPastTimeString", "(long)", "summary", "df-generated"] + - ["hudson", "Util", "getTimeSpanString", "(long)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(IOException)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(Throwable)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(int)", "summary", "df-generated"] + - ["hudson", "Util", "ifOverridden", "(Supplier,Class,Class,String,Class[])", "summary", "df-generated"] + - ["hudson", "Util", "isAbsoluteUri", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isDescendant", "(File,File)", "summary", "df-generated"] + - ["hudson", "Util", "isOverridden", "(Class,Class,String,Class[])", "summary", "df-generated"] + - ["hudson", "Util", "isRelativePath", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isSafeToRedirectTo", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isSymlink", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "isSymlink", "(Path)", "summary", "df-generated"] + - ["hudson", "Util", "loadFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "loadFile", "(File,Charset)", "summary", "df-generated"] + - ["hudson", "Util", "loadProperties", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "min", "(int,int[])", "summary", "df-generated"] + - ["hudson", "Util", "modeToPermissions", "(int)", "summary", "df-generated"] + - ["hudson", "Util", "permissionsToMode", "(Set)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlink", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlink", "(File,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlinkToFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "toAes128Key", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "toHexString", "(byte[],int,int)", "summary", "df-generated"] + - ["hudson", "Util", "tokenize", "(String,String)", "summary", "df-generated"] + - ["hudson", "Util", "touch", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "tryParseNumber", "(String,Number)", "summary", "df-generated"] + - ["hudson", "Util", "xmlEscape", "(String)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "getDefaultRingBufferSize", "()", "summary", "df-generated"] + - ["hudson", "WebAppMain", "getHomeDir", "(ServletContextEvent)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "installExpressionFactory", "(ServletContextEvent)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "joinInit", "()", "summary", "df-generated"] + - ["hudson", "WorkspaceSnapshot", "restoreTo", "(AbstractBuild,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson", "XmlFile", "asString", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "delete", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "exists", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "mkdirs", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "read", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "readRaw", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "sniffEncoding", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "unmarshal", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "unmarshalNullingOut", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "write", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "writeRawTo", "(Writer)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findClass", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findResource", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findResources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getClassLoadingLock", "(String)", "summary", "df-generated"] + - ["jenkins.agents", "AgentComputerUtil", "getChannelToController", "()", "summary", "df-generated"] + - ["jenkins.agents", "AgentComputerUtil", "getChannelToMaster", "()", "summary", "df-generated"] + - ["jenkins.agents", "WebSocketAgents", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "doDelete", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "doDownload", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getLastModified", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getLastModifiedDate", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getPath", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getTimeSpanString", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "ControllerExecutorsAgents", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "ControllerExecutorsNoAgents", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "CompletedInitializationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "ControllerExecutorsAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "ControllerExecutorsNoAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "RootUrlNotSetMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "SecurityIsOffMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "URICheckEncodingMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_CompletedInitializationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_ControllerExecutorsAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_ControllerExecutorsNoAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_RootUrlNotSetMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_SecurityIsOffMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_URICheckEncodingMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "RootUrlNotSetMonitor", "isUrlNull", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "SecurityIsOffMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "URICheckEncodingMonitor", "doCheckURIEncoding", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.diagnostics", "URICheckEncodingMonitor", "isCheckEnabled", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FileFingerprintStorage", "load", "(File)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FileFingerprintStorage", "save", "(Fingerprint,File)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "cleanFingerprint", "(Fingerprint,TaskListener)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "delete", "(String)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "get", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "getFileFingerprintStorage", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "isReady", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "iterateAndCleanupFingerprints", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "load", "(String)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "save", "(Fingerprint)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorageDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "getFingerprintStorageDescriptors", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "isFingerprintCleanupDisabled", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "setFingerprintCleanupDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.fingerprints", "Messages", "FileFingerprintStorage_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "Messages", "_FileFingerprintStorage_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.formelementpath", "FormElementPathPageDecorator", "isEnabled", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "initializeState", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "isSetupComplete", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "valueOf", "(String)", "summary", "df-generated"] + - ["jenkins.install", "InstallStateFilter", "all", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallStateFilter", "getNextInstallState", "(InstallState,Provider)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "clearInstallStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "getLastExecVersion", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "getPersistedInstallStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "persistInstallStatus", "(List)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "proceedToNextStateFrom", "(InstallState)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "saveLastExecVersion", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_RootUrl_Empty", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_RootUrl_Invalid", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_ValidationErrors", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_RootUrl_Empty", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_RootUrl_Invalid", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_ValidationErrors", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doCompleteInstall", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doConfigureInstance", "(StaplerRequest,String)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doCreateAdminUser", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doPlatformPluginList", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doRestartStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getCurrentLevel", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInitialAdminApiTokenFile", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInitialAdminPasswordFile", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInstallState", "(String)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInstallStates", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getPlatformPluginUpdates", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "hasSetupWizardFilter", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "isUsingSecurityToken", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "onInstallStateUpdate", "(InstallState)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApi", "doNonSecurityPopupContent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApi", "doSecurityPopupContent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApiData", "hasActiveMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getMonitorsToDisplay", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getNonSecurityAdministrativeMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getSecurityAdministrativeMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AsynchronousAdministrativeMonitor", "isFixingActive", "()", "summary", "df-generated"] + - ["jenkins.management", "Badge", "getSeverity", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "AdministrativeMonitorsDecorator_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "CliLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "CliLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureTools_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureTools_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConsoleLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConsoleLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "NodesLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "NodesLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_incompatibleUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_incompatibleUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_securityUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_securityUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_updateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_updatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ReloadLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ReloadLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_cancel", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_prepare", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShutDownReason_title", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShutDownReason_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShuttingDownInProgressDescription", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "StatisticsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "StatisticsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemInfoLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemInfoLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemLogLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemLogLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_AdministrativeMonitorsDecorator_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_CliLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_CliLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureTools_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureTools_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConsoleLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConsoleLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_NodesLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_NodesLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_incompatibleUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_incompatibleUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_securityUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_securityUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_updateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_updatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ReloadLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ReloadLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_cancel", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_prepare", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShutDownReason_title", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShutDownReason_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShuttingDownInProgressDescription", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_StatisticsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_StatisticsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemInfoLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemInfoLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemLogLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemLogLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "ShutdownLink", "doCancel", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "ShutdownLink", "doPrepare", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model.identity", "IdentityRootAction", "getFingerprint", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "IdentityRootAction", "getPublicKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getCertificate", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getKeyPair", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPrivateKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPrivateKeyClass", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPublicKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPublicKeyClass", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Category", "getMinToShow", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Category", "getOrder", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getCategory", "(TopLevelItemDescriptor)", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getDescription", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getId", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getMinToShow", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getOrder", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "NestedProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "NestedProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "StandaloneProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "StandaloneProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "Uncategorized_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "Uncategorized_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_NestedProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_NestedProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_StandaloneProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_StandaloneProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_Uncategorized_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_Uncategorized_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "baseDirInitialized", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "get", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "getById", "(String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "getByNumber", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "maxNumberOnDisk", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "newestBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "oldestBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "purgeCache", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "removeValue", "(Object)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "reset", "(TreeMap)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "runExists", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "search", "(int,Direction)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", "dropLinks", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getBuild", "(String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getBuildByNumber", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getFirstBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getLastBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getNearestBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getNearestOldBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "loadBuild", "(File)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "newBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "onCreatedFromScratch", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "onLoad", "(ItemGroup,String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "removeRun", "(Run)", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "blocksRestart", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "displayCell", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "interrupt", "(boolean)", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "maybeComplete", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "contains", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "deregister", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "isRegistered", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "register", "(Item)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "archive", "(FilePath,Launcher,BuildListener,Map)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "delete", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "onLoad", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "root", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerFactory", "managerFor", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerFactoryDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "AssetManager", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "BackgroundGlobalBuildDiscarder", "processJob", "(TaskListener,Job)", "summary", "df-generated"] + - ["jenkins.model", "BuildDiscarder", "perform", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "BuildDiscarderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "BuiltInNodeMigration", "doAct", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["jenkins.model", "CauseOfInterruption", "getShortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "CauseOfInterruption", "print", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.model", "Configuration", "getBooleanConfigParameter", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.model", "DependencyDeclarer", "buildDependencyGraph", "(AbstractProject,DependencyGraph)", "summary", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", "canAdd", "(TopLevelItem)", "summary", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", "remove", "(TopLevelItem)", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "createActions", "(List)", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "getTimestamp", "()", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "isFingerprintDeletionBlocked", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "apply", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "apply", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "isApplicable", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategyDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalCloudConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfiguration", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "get", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "getShortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalQuietPeriodConfiguration", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalSCMRetryCountConfiguration", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "equals", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "filenameOf", "(String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "legacyFilenameOf", "(String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "toString", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$DescriptorImpl", "doCheckNumExecutors", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$DescriptorImpl", "getDynamic", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "getExpectedPort", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "getSystemPropertyName", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$JenkinsHolder", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "_doScript", "(StaplerRequest,StaplerResponse,RequestDispatcher,VirtualChannel,ACL)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "addNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "checkGoodName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "copy", "(AbstractProject,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "createProject", "(Class,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "disableSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCancelQuietDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckDisplayName", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckURIEncoding", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckViewName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doClassicThreadDump", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doConfigExecutorsSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCreateView", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doDefaultJDKCheck", "(StaplerRequest,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doDoFingerprintCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doEval", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doException", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doExit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doFingerprintCleanup", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doGc", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doIconSize", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doLoginEntry", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doLogout", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doQuietDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doQuietDown", "(boolean,int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doReload", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doResources", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSafeExit", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSafeRestart", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doScript", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doScriptText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSecured", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSignup", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSimulateOutOfMemory", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doTestPost", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doToggleCollapse", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doViewExistsCheck", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doWorkspaceCleanup", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getActiveInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getAuthentication2", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getAuthentication", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getBuildWrapper", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getBuilder", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getCategorizedManagementLinks", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getComputer", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getConfiguredRootUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getDescriptor", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getDescriptorByType", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getFederatedLoginService", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getFederatedLoginServices", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInitLevel", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInjector", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstallState", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstanceOrNull", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItem", "(String,Item,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItem", "(String,ItemGroup,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItemByFullName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItemByFullName", "(String,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItems", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getJobNames", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getJobProperty", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getLegacyInstanceId", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getLifecycle", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getManagementLinks", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getMe", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugin", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugin", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugins", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getProjects", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPublisher", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRepositoryBrowser", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRetentionStrategy", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRootUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRootUrlFromRequest", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getScm", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecretKeyAsAES128", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecurityRealms", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSlaveAgentPort", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getStoredVersion", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getTrigger", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getUnprotectedRootActions", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getVersion", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "hasPeople", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isCheckURIEncodingEnabled", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isDefaultBuildDir", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isDisableRememberMe", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isNoUsageStatistics", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isQuietingDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isRootUrlSecure", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isSlaveAgentPortEnforced", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isSubjectToMandatoryReadPermissionCheck", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isTerminating", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUpgradedFromBefore", "(VersionNumber)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUsageStatisticsCollected", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseCrumbs", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseProjectNamingStrategy", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "lookup", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "rebuildDependencyGraph", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "refreshExtensions", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "reload", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "removeNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "restart", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "safeRestart", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setAgentProtocols", "(Set)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setDisableRememberMe", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setMode", "(Mode)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNoUsageStatistics", "(Boolean)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNodes", "(List)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNumExecutors", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setQuietPeriod", "(Integer)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setScmCheckoutRetryCount", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setSlaveAgentPort", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setViews", "(Collection)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "shouldShowStackTrace", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "updateNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "doCheckAdminAddress", "(String)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "getOrDie", "()", "summary", "df-generated"] + - ["jenkins.model", "MasterBuildConfiguration", "getLabelString", "()", "summary", "df-generated"] + - ["jenkins.model", "MasterBuildConfiguration", "getNumExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BlockedBecauseOfBuildInProgress_ETA", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BlockedBecauseOfBuildInProgress_shortDescription", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BuildDiscarderProperty_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BuiltInNodeMigration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_disable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_enable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_safe_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CauseOfInterruption_ShortDescription", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "DefaultProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "EnforceSlaveAgentPortAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "GlobalCloudConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_IncorrectNumberOfExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_JobNameConventionNotApplyed", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NoName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ViewName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseInsensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseSensitiveEmailAddress_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseSensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "JenkinsLocationConfiguration_does_not_look_like_an_email_address", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "JobGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_Address_Not_Configured", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_Localhost_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_NotHttp_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "ParameterizedJobMixIn_build_now", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "ParameterizedJobMixIn_build_with_parameters", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_NamePatternInvalidSyntax", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_NamePatternRequired", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "SimpleGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BlockedBecauseOfBuildInProgress_ETA", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BlockedBecauseOfBuildInProgress_shortDescription", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BuildDiscarderProperty_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BuiltInNodeMigration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_disable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_enable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_safe_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CauseOfInterruption_ShortDescription", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_DefaultProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_EnforceSlaveAgentPortAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_GlobalCloudConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_IncorrectNumberOfExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_JobNameConventionNotApplyed", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NoName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ViewName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseInsensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseSensitiveEmailAddress_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseSensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_JenkinsLocationConfiguration_does_not_look_like_an_email_address", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_JobGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_Address_Not_Configured", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_Localhost_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_NotHttp_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_ParameterizedJobMixIn_build_now", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_ParameterizedJobMixIn_build_with_parameters", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_NamePatternInvalidSyntax", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_NamePatternRequired", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_SimpleGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "ModelObjectWithChildren", "doChildrenContextMenu", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu", "doContextMenu", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", "copy", "(TopLevelItem,String)", "summary", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", "createProjectFromXML", "(String,InputStream)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnCreated", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnDeleted", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnUpdated", "(Node,Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "isLegacy", "()", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "load", "()", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "removeNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "replaceNode", "(Node,Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "setNodes", "(Collection)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "updateNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doBuildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doCancelQueue", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doDisable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doEnable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doPolling", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getBuildNowText", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getParameterizedJobMixIn", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isBuildable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isParameterized", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "makeDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "setDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "supportsMakeDisabled", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doBuildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doCancelQueue", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getBuildCause", "(ParameterizedJob,StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getBuildNowText", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getTrigger", "(Job,Class)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "isParameterized", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(Cause)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(int,Cause)", "summary", "df-generated"] + - ["jenkins.model", "PeepholePermalink", "apply", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy$DescriptorImpl", "doCheckNamePattern", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "checkName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "checkName", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "isForceExistingJobs", "()", "summary", "df-generated"] + - ["jenkins.model", "RunAction2", "onAttached", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "RunAction2", "onLoad", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator$UnmigrationInstruction", "getCommand", "()", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "created", "(File)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "delete", "(File,String)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "findNumber", "(String)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "migrate", "(File,File)", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "first", "()", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "getUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "actionType", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "createFor", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "factoriesFor", "(Class,Class)", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "type", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientFingerprintFacetFactory", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientFingerprintFacetFactory", "createFor", "(Fingerprint,List)", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "getStartTime", "()", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "getUptime", "()", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "init", "()", "summary", "df-generated"] + - ["jenkins.monitor", "JavaVersionRecommendationAdminMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.monitor", "Messages", "JavaLevelAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.monitor", "Messages", "_JavaLevelAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", "get", "()", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", "parseSettingsProvider", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", "supplySettings", "(AbstractBuild,TaskListener)", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProviderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "DefaultGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "DefaultSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "FilePathGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "FilePathSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_DefaultGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_DefaultSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_FilePathGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_FilePathSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", "parseSettingsProvider", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", "supplySettings", "(AbstractBuild,TaskListener)", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProviderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getInstance", "(boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getTLDEntries", "(ArrayType)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isAllowLocal", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidCountryCodeTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidGenericTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidInfrastructureTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidLocalTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "unicodeToASCII", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "updateTLDOverride", "(ArrayType,String[])", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValidInet4Address", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValidInet6Address", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String[])", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String[],boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "toString", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "UrlValidator", "(long)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", "getRequiredVersion", "()", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getDetachedPlugins", "()", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getDetachedPlugins", "(VersionNumber)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getImpliedDependencies", "(String,String)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "isDetachedPlugin", "(String)", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "calculateCulprits", "()", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "getCulprits", "()", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "hasParticipant", "(User)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategy", "checkout", "(AbstractBuildExecution)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategy", "preCheckout", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "_for", "(AbstractProject)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "all", "()", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "firstShouldPollVeto", "(Item)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "listShouldPollVetos", "(Item)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "shouldPoll", "(Item)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "hasExistingConfigFile", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isCreationOfLegacyTokenEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isTokenGenerationOnCreationEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isUsageStatisticsEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setCreationOfLegacyTokenEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setTokenGenerationOnCreationEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setUsageStatisticsEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyDisabledDefaultAdministrativeMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", "getNumDaysUse", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", "getUseCounter", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeAll", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeAllExcept", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeId", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "getNumDaysCreation", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "isLegacy", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "match", "(byte[])", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "addFixedNewToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "generateNewToken", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "reconfigure", "(Map)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "regenerateTokenFromLegacy", "(Secret)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "regenerateTokenFromLegacyIfRequired", "(Secret)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "renameToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "revokeAllTokens", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "revokeAllTokensExcept", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "doIndex", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "doRevokeAllSelected", "(RevokeAllSelectedModel)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "getImpactedUserList", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "getLegacyTokenOf", "(User)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "hasFreshToken", "(User,TokenInfoAndStats)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "hasMoreRecentlyUsedToken", "(User,TokenInfoAndStats)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "ApiTokenPropertyDisabledDefaultAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "LegacyApiTokenAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_ApiTokenPropertyDisabledDefaultAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_LegacyApiTokenAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.csrf", "Messages", "CSRFAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.csrf", "Messages", "_CSRFAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.s2m", "AdminWhitelistRule", "getMasterKillSwitch", "()", "summary", "df-generated"] + - ["jenkins.security.s2m", "AdminWhitelistRule", "setMasterKillSwitch", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.seed", "Messages", "UserSeedProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security.seed", "Messages", "_UserSeedProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedChangeListener", "fireUserSeedRenewed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedChangeListener", "onUserSeedRenewed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty$DescriptorImpl", "doRenewSessionSeed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty$DescriptorImpl", "isCurrentUser", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty", "renewSeed", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "RoutingDecisionProvider", "decide", "(String)", "summary", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", "get", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", "reload", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "TypedFilter", "isStaplerRelevant", "(Class)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doAddFixedToken", "(User,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doChangeToken", "(User,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doGenerateNewToken", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRename", "(User,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevoke", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevokeAll", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevokeAllExcept", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "getNoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "hasCurrentUserRightToGenerateNewToken", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "isStatisticsEnabled", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "mustDisplayLegacyApiToken", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "addFixedNewToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "changeApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "deleteApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "generateNewToken", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "getApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "getTokenList", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "hasLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "matchesPassword", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeAllTokens", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeAllTokensExceptOne", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeToken", "(String)", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "authenticate2", "(HttpServletRequest,HttpServletResponse,String,String)", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "authenticate", "(HttpServletRequest,HttpServletResponse,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ChannelConfigurator", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "ChannelConfigurator", "onChannelBuilding", "(ChannelBuilder,Object)", "summary", "df-generated"] + - ["jenkins.security", "ClassFilterImpl", "register", "()", "summary", "df-generated"] + - ["jenkins.security", "ClassFilterImpl", "unregister", "()", "summary", "df-generated"] + - ["jenkins.security", "ConfidentialStore", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "ConfidentialStore", "randomBytes", "(int)", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "decrypt", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "decrypt", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "encrypt", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "encrypt", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "newIv", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "newIv", "(int)", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter$Contributed", "load", "()", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter", "permits", "(Class)", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter", "permits", "(String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "checkMac", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "checkMac", "(byte[],byte[])", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "createMac", "()", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "mac", "(String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "mac", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "getAuthorities2", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "getAuthorities", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "invalidate", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "update", "(Authentication)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_CapabilityNotAllowed", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_Success", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_SuccessHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_TokenIsHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_LegacyTokenName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_NoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "RekeySecretAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Empty", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Exception", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_FailedIdentityCheck", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_IOException", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Invalid", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_InvalidRootURL", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_NeedsRootURL", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_NotJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_OtherJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_ResourceResponse", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SameAsCurrent", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SameAsJenkinsRoot", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SomeJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_ThisJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "Token_Created_on", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "UpdateSiteWarningsMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_CapabilityNotAllowed", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_Success", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_SuccessHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_TokenIsHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_LegacyTokenName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_NoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_RekeySecretAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Empty", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Exception", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_FailedIdentityCheck", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_IOException", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Invalid", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_InvalidRootURL", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_NeedsRootURL", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_NotJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_OtherJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_ResourceResponse", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SameAsCurrent", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SameAsJenkinsRoot", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SomeJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_ThisJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_Token_Created_on", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_UpdateSiteWarningsMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate2", "(Item)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate2", "(Task)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate", "(Item)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate", "(Task)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorProvider", "authenticators", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorProvider", "getAuthenticators", "()", "summary", "df-generated"] + - ["jenkins.security", "RSAConfidentialKey", "getEncodedPublicKey", "()", "summary", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", "sign", "(String)", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "doScan", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "isDone", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "isScanOnBoot", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "scanOnReboot", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "setNeeded", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "isResourceDomainConfigured", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "isResourceRequest", "(HttpServletRequest)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainFilter", "init", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRecommendation", "doAct", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "SecureRequester", "permit", "(StaplerRequest,Object)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireAuthenticated2", "(UserDetails)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireAuthenticated", "(UserDetails)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireFailedToAuthenticate", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireFailedToLogIn", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireLoggedIn", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireLoggedOut", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireUserCreated", "(String)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getAllWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getApplicableWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getPlugin", "(Warning)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "isIgnored", "(Warning)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "doForward", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "getActiveCoreWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "getActivePluginWarningsByPlugin", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "hasApplicableHiddenWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "invalidate", "(String)", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "invalidateAll", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "canWork", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "restart", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "ClassLoaderStatisticsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "EnvVarsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "SystemPropertySlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "ThreadDumpSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_ClassLoaderStatisticsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_EnvVarsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_SystemPropertySlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_ThreadDumpSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "getRequiredPermission", "()", "summary", "df-generated"] + - ["jenkins.slaves", "IOHubProvider", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "exists", "(String)", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "generateCookie", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "owns", "(String)", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "DeprecatedAgentProtocolMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol2_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol3_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol4_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_DeprecatedAgentProtocolMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol2_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol3_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol4_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "NioChannelSelector", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.slaves", "PingFailureAnalyzer", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "PingFailureAnalyzer", "onPingFailure", "(Channel,Throwable)", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingVersionInfo", "getEmbeddedVersion", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingVersionInfo", "getMinimumSupportedVersion", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "getDisabledDefaults", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "getEnabledDefaults", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isFailIfWorkDirIsMissing", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isUseAgentRootDir", "()", "summary", "df-generated"] + - ["jenkins.slaves", "WorkspaceLocator", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "WorkspaceLocator", "locate", "(TopLevelItem,Node)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationOK", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationWarning", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_REMOVE_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_RESET_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_RemovalMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_ResetMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationOK", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationWarning", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_REMOVE_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_RESET_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_RemovalMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_ResetMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule$DescriptorImpl", "doCheckRetainCharacteristicEnvVars", "(boolean)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule$ProcessVariablesHandling", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "getProcessVariablesHandling", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "isRetainCharacteristicEnvVars", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "setProcessVariablesHandling", "(ProcessVariablesHandling)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "setRetainCharacteristicEnvVars", "(boolean)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "getAllActivatedGlobalRules", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "getAllGlobalRules", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterLocalRuleDescriptor", "allApplicableFor", "(Class)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterLocalRuleDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRule", "filter", "(EnvVars,EnvVarsFilterRuleContext)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRule", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", "filter", "(EnvVars,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterableBuilder", "buildEnvVarsFilterRules", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,EnvVars,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,FilePath,EnvVars,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "tearDown", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "tearDown", "(Run,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "createContext", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "createLoggerDecorator", "(Run)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "setUp", "(Context,Run,FilePath,Launcher,TaskListener,EnvVars)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "setUp", "(Context,Run,TaskListener,EnvVars)", "summary", "df-generated"] + - ["jenkins.telemetry.impl", "UserLanguages", "setUpFilter", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "all", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "createContent", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getEnd", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getId", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getStart", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "isActivePeriod", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.tools", "GlobalToolConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "ReverseBuildTrigger_build_after_other_projects_are_built", "()", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "ReverseBuildTrigger_running_as_cannot_even_see_for_trigger_f", "(Object,Object,Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "SCMTriggerItem_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_ReverseBuildTrigger_build_after_other_projects_are_built", "()", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_ReverseBuildTrigger_running_as_cannot_even_see_for_trigger_f", "(Object,Object,Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_SCMTriggerItem_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger$DescriptorImpl", "doAutoCompleteUpstreamProjects", "(String,Item,ItemGroup)", "summary", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger$DescriptorImpl", "doCheckUpstreamProjects", "(Job,String)", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "asItem", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getNextBuildNumber", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getSCMTrigger", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getSCMs", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "poll", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "schedulePolling", "()", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "methodMissing", "(String,Object)", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "propertyMissing", "(String)", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "propertyMissing", "(String,Object)", "summary", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", "run", "()", "summary", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", "asUncheckedIOException", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "fastGet", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "get", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "isOff", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "isOn", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "off", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "on", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "set", "(boolean)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover$RetryStrategy", "shouldRetry", "(int)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveDirectoryContents", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveFile", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveRecursive", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "newSimpleRemover", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "getCurrentJavaRuntimeVersionNumber", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "getCurrentRuntimeJavaVersion", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "isRunningWithJava8OrBelow", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "isRunningWithPostJava8", "()", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,Document)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,File)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,File,String)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(File)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(File,String)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(InputStream)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(Reader)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "safeTransform", "(Source,Result)", "summary", "df-generated"] + - ["jenkins.util.xstream", "CriticalXStreamException", "CriticalXStreamException", "(XStreamException)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM$ConverterImpl", "unmarshalElement", "(HierarchicalStreamReader,UnmarshallingContext)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(HierarchicalStreamReader)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(InputStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(Reader)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(XStream,Object)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "getAttributeCount", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "newReader", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "newWriter", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "unmarshal", "(XStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "unmarshal", "(XStream,Object)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(HierarchicalStreamWriter)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(OutputStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(Writer)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,Project,Path)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(Project,Path)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(Project,Path,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "addPathFiles", "(Collection)", "summary", "df-generated"] + - ["jenkins.util", "DirectedGraph$SCC", "SCC", "(int)", "summary", "df-generated"] + - ["jenkins.util", "DirectedGraph", "getStronglyConnectedComponents", "()", "summary", "df-generated"] + - ["jenkins.util", "FullDuplexHttpService", "download", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.util", "FullDuplexHttpService", "upload", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.util", "HttpSessionListener", "all", "()", "summary", "df-generated"] + - ["jenkins.util", "InterceptingExecutorService", "toString", "()", "summary", "df-generated"] + - ["jenkins.util", "JSONSignatureValidator", "verifySignature", "(JSONObject)", "summary", "df-generated"] + - ["jenkins.util", "JavaVMArguments", "current", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findClass", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findLoadedClass2", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findResource", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findResources", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "getClassLoadingLock", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "checkJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "checkNotJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "isJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "Listeners", "notify", "(Class,boolean,Consumer)", "summary", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", "getPresizedMutableMap", "(int)", "summary", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", "preallocatedHashmapCapacity", "(int)", "summary", "df-generated"] + - ["jenkins.util", "PluginLabelUtil", "canonicalLabels", "(JSONArray)", "summary", "df-generated"] + - ["jenkins.util", "ProgressiveRendering", "news", "()", "summary", "df-generated"] + - ["jenkins.util", "ProgressiveRendering", "start", "()", "summary", "df-generated"] + - ["jenkins.util", "ResourceBundleUtil", "getBundle", "(String)", "summary", "df-generated"] + - ["jenkins.util", "ResourceBundleUtil", "getBundle", "(String,Locale)", "summary", "df-generated"] + - ["jenkins.util", "ServerTcpPort", "ServerTcpPort", "(JSONObject)", "summary", "df-generated"] + - ["jenkins.util", "ServerTcpPort", "getPort", "()", "summary", "df-generated"] + - ["jenkins.util", "SetContextClassLoader", "SetContextClassLoader", "(Class)", "summary", "df-generated"] + - ["jenkins.util", "SetContextClassLoader", "SetContextClassLoader", "(ClassLoader)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "allowOnAgent", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getBoolean", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getBoolean", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String,Integer)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String,Integer,Level)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String,Long)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String,Long,Level)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getString", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "optBoolean", "(String)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "TimeDuration", "(long)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "as", "(TimeUnit)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "fromString", "(String)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTime", "()", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTimeInMillis", "()", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTimeInSeconds", "()", "summary", "df-generated"] + - ["jenkins.util", "Timer", "get", "()", "summary", "df-generated"] + - ["jenkins.util", "Timer", "shutdown", "()", "summary", "df-generated"] + - ["jenkins.util", "TreeString$ConverterImpl", "ConverterImpl", "(XStream)", "summary", "df-generated"] + - ["jenkins.util", "TreeString", "isBlank", "()", "summary", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", "dedup", "()", "summary", "df-generated"] + - ["jenkins.util", "URLClassLoader2", "URLClassLoader2", "(URL[])", "summary", "df-generated"] + - ["jenkins.util", "URLClassLoader2", "URLClassLoader2", "(URL[],ClassLoader)", "summary", "df-generated"] + - ["jenkins.util", "UrlHelper", "isValidRootUrl", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "canRead", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "child", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "containsSymLinkChild", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "exists", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "getName", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "getParent", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "hasSymlink", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isDescendant", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isDirectory", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isFile", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "lastModified", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "length", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "(String,String,boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "(String,String,boolean,boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "listOnlyDescendants", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "mode", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "open", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "open", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "readLink", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "run", "(Callable)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "supportIsDescendant", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "supportsQuickRecursiveListing", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toExternalURL", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toString", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toURI", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "zip", "(OutputStream,String,String,boolean,boolean,String)", "summary", "df-generated"] + - ["jenkins.views", "Header", "get", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isAvailable", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isCompatible", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isEnabled", "()", "summary", "df-generated"] + - ["jenkins.views", "PartialHeader", "getSupportedHeaderVersion", "()", "summary", "df-generated"] + - ["jenkins.views", "PartialHeader", "incompatibleHeaders", "()", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "close", "()", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendBinary", "(ByteBuffer)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendBinary", "(ByteBuffer,boolean)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendPing", "(ByteBuffer)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendText", "(String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketBinary", "(byte[],int,int)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketClose", "(int,String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketError", "(Throwable)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketText", "(String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider", "handle", "(HttpServletRequest,HttpServletResponse,Listener)", "summary", "df-generated"] + - ["jenkins.websocket", "WebSocketEcho", "doIndex", "()", "summary", "df-generated"] + - ["jenkins.websocket", "WebSockets", "isSupported", "()", "summary", "df-generated"] + - ["jenkins.websocket", "WebSockets", "upgrade", "(WebSocketSession)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", "getEntryId", "()", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "HistoryPageFilter", "(int)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "add", "(Iterable)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "add", "(Iterable,List)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "setNewerThan", "(Long)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "setOlderThan", "(Long)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "size", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "all", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "getName", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "handle", "(Socket)", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isDeprecated", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isOptIn", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isRequired", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "of", "(String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "_findResource", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "_findResources", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "loadClass", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "allOf", "(ExtensionFinder)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "filtered", "()", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "find", "(Class)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "union", "(Collection)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "union", "(ExtensionComponentSet[])", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "all", "()", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "allows", "(Class,ExtensionComponent)", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "isAllowed", "(Class,ExtensionComponent)", "summary", "df-generated"] + - ["jenkins", "ExtensionRefreshException", "ExtensionRefreshException", "(String,Throwable)", "summary", "df-generated"] + - ["jenkins", "ExtensionRefreshException", "ExtensionRefreshException", "(Throwable)", "summary", "df-generated"] + - ["jenkins", "I18n", "doResourceBundle", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins", "InitReactorRunner", "getDisplayName", "(Task)", "summary", "df-generated"] + - ["jenkins", "InitReactorRunner", "run", "(Reactor)", "summary", "df-generated"] + - ["jenkins", "UserAgentURLConnectionDecorator", "getUserAgent", "()", "summary", "df-generated"] + - ["jenkins", "YesNoMaybe", "toBool", "()", "summary", "df-generated"] + - ["jenkins", "YesNoMaybe", "toBoolean", "(YesNoMaybe)", "summary", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", "GrantedAuthoritySid", "(GrantedAuthority)", "summary", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", "PrincipalSid", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "fromSpring", "(SecurityContext)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "getAuthentication", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "setAuthentication", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "clearContext", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "getContext", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "setContext", "(SecurityContext)", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "AnonymousAuthenticationToken", "(String,Object,GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "setDetails", "(Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AbstractAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AuthenticationProvider", "authenticate", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AuthenticationProvider", "supports", "(Class)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "ProviderNotFoundException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "ProviderNotFoundException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "fromSpring", "(ProviderNotFoundException)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "UsernamePasswordAuthenticationToken", "(Object,Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "UsernamePasswordAuthenticationToken", "(Object,Object,GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "setDetails", "(Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "autoLogin", "(HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "loginFail", "(HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "loginSuccess", "(HttpServletRequest,HttpServletResponse,Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.ui", "WebAuthenticationDetails", "WebAuthenticationDetails", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getAuthorities", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getPassword", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getUsername", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isAccountNonExpired", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isAccountNonLocked", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isCredentialsNonExpired", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isEnabled", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", "fromSpring", "(UserDetailsService)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "UsernameNotFoundException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "UsernameNotFoundException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "fromSpring", "(UsernameNotFoundException)", "summary", "df-generated"] + - ["org.acegisecurity.util", "FieldUtils", "getProtectedFieldValue", "(String,Object)", "summary", "df-generated"] + - ["org.acegisecurity.util", "FieldUtils", "setProtectedFieldValue", "(String,Object,Object)", "summary", "df-generated"] + - ["org.acegisecurity", "AccessDeniedException", "AccessDeniedException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AccessDeniedException", "AccessDeniedException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "AccountExpiredException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "AccountExpiredException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "fromSpring", "(AccountExpiredException)", "summary", "df-generated"] + - ["org.acegisecurity", "AcegiSecurityException", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getAuthorities", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getCredentials", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getDetails", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getPrincipal", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "isAuthenticated", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "setAuthenticated", "(boolean)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", "clearExtraInformation", "()", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationManager", "fromSpring", "(AuthenticationManager)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationManager", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "AuthenticationServiceException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "AuthenticationServiceException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "fromSpring", "(AuthenticationServiceException)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "BadCredentialsException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "BadCredentialsException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "fromSpring", "(AuthenticationException)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "CredentialsExpiredException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "CredentialsExpiredException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "fromSpring", "(CredentialsExpiredException)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "DisabledException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "DisabledException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "fromSpring", "(DisabledException)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "fromSpring", "(Collection)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "fromSpring", "(GrantedAuthority)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "toSpring", "(GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "InsufficientAuthenticationException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "InsufficientAuthenticationException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "fromSpring", "(InsufficientAuthenticationException)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "LockedException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "LockedException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "fromSpring", "(LockedException)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", "isBuildStatus", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", "isInProgress", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", "isSvgSprite", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "getSymbol", "(String,String,String,String,String,String,String)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "initPageVariables", "(JellyContext)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconNameClass", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconSizeClass", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconUrl", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "tryTranslateTangoIconToSymbol", "(String)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "tryTranslateTangoIconToSymbol", "(String,Supplier)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSpec", "getIconClassName", "()", "summary", "df-generated"] + - ["org.jenkins.ui.symbol", "Symbol", "get", "(SymbolRequest)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "DataAccessException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "DataAccessException", "(String,Throwable)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "toSpring", "()", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessResourceFailureException", "DataAccessResourceFailureException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessResourceFailureException", "DataAccessResourceFailureException", "(String,Throwable)", "summary", "df-generated"] + - ["org.springframework.dao", "DataRetrievalFailureException", "DataRetrievalFailureException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataRetrievalFailureException", "DataRetrievalFailureException", "(String,Throwable)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/stapler.model.yml b/java/ql/lib/ext/generated/stapler.model.yml new file mode 100644 index 00000000000..a82d01328d6 --- /dev/null +++ b/java/ql/lib/ext/generated/stapler.model.yml @@ -0,0 +1,679 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Stapler framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.kohsuke.stapler.bind", "Bound", true, "getProxyScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", true, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", true, "getURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable$Table", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", true, "bind", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.compression", "FilterServletOutputStream", true, "FilterServletOutputStream", "(OutputStream,ServletOutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.compression", "FilterServletOutputStream", true, "FilterServletOutputStream", "(OutputStream,ServletOutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ClassAttributeBehaviour", true, "simple", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ClassAttributeBehaviour", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "getExportConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "name", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "value", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "getClassAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "getExportInterceptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withClassAttribute", "(ClassAttributeBehaviour)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withClassAttribute", "(ClassAttributeBehaviour)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withExportInterceptor", "(ExportInterceptor)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withExportInterceptor", "(ExportInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withFlavor", "(Flavor)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withPrettyPrint", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withSkipIfFail", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,StaplerResponse)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer,ExportConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer,ExportConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,DataWriter)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,TreePruner,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,int,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "get", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "get", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "getOrNull", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", true, "NotExportableException", "(Class,Class,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", true, "NotExportableException", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "getJavadoc", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "writeTo", "(Object,TreePruner,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "writeTo", "(Object,int,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", true, "SchemaGenerator", "(Model)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "accept", "(Object,Property)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "accept", "(Object,Property)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "getRange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", true, "getBaseClass", "(Type,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", true, "getTypeArgument", "(Type,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "Adjunct", "(AdjunctManager,String,ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "Adjunct", "(AdjunctManager,String,ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "getPackageUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "doDynamic", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "assumeIncluded", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "assumeIncluded", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "generate", "(XMLOutput,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "get", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "getIncluded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "spool", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", true, "NoSuchAdjunctException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", true, "NoSuchAdjunctException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "ErrorObject", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "NoHomeDirError", true, "NoHomeDirError", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", true, "AtomicFileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", true, "getTemporaryFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", true, "writeTo", "(OutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "CharSpool", false, "writeTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", true, "IOException2", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", true, "IOException2", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "WriterOutputStream", true, "WriterOutputStream", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "WriterOutputStream", true, "WriterOutputStream", "(Writer,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework", "AbstractWebAppMain", true, "getInitializer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "Interceptor", true, "setTarget", "(Function)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(Set,Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(Set,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(String[],String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(String[],String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovierJellyScript", true, "GroovierJellyScript", "(Class,URL)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "GroovyClassLoaderTearOff", "(MetaClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "parse", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "parseGSP", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "GroovyClassTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClosureScript", true, "getDelegate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClosureScript", true, "setDelegate", "(GroovyObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageScript", true, "getOut", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "GroovyServerPageTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "JellyBuilder", "(JellyContext,XMLOutput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "JellyBuilder", "(JellyContext,XMLOutput)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getBuilder", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getRequest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getResponse", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getRootURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "jelly", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "res", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "res", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "setOutput", "(XMLOutput)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "setOutput", "(XMLOutput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "with", "(XMLOutput,Closure)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "StaplerClosureScript", true, "gettext", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "StaplerClosureScript", true, "gettext", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AdjunctTag", true, "setAssumes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AdjunctTag", true, "setIncludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "BindTag", true, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "BindTag", true, "setVar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ContentTypeTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", true, "setInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", true, "setReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "DoctypeTag", true, "setPublicId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "DoctypeTag", true, "setSystemId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "FindAncestorTag", true, "setTag", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "FindAncestorTag", true, "setVar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HeaderTag", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HeaderTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setFrom", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setIt", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setPage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression$RawHtmlArgument", false, "RawHtmlArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "InternationalizedStringExpression", "(ResourceBundle,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "InternationalizedStringExpression", "(ResourceBundle,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IsUserInRoleTag", true, "setRole", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", true, "JellyClassLoaderTearOff", "(MetaClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "JellyClassTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyRequestDispatcher", false, "JellyRequestDispatcher", "(Object,Script)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyRequestDispatcher", false, "JellyRequestDispatcher", "(Object,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Class,URL,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Class,URL,Script)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "OutTag", true, "setValue", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "RedirectTag", true, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "ResourceBundle", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "format", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getBaseName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getFormatString", "(Locale,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getFormatStringWithoutDefaulting", "(Locale,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "load", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "load", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundleFactory", true, "create", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "SetHeaderTag", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "SetHeaderTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StructuredMessageFormatTag", true, "addArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StructuredMessageFormatTag", true, "setKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ThisTagLibrary", true, "ThisTagLibrary", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", true, "JsonHttpResponse", "(JSONObject)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", true, "JsonHttpResponse", "(JSONObject,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "Klass", "(Object,KlassNavigator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "Klass", "(Object,KlassNavigator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "getArrayElement", "(Object,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "getMapElement", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", true, "getArrayElement", "(Object,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", true, "getMapElement", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.tags", "Include", true, "setIt", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.tags", "Include", true, "setPage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.util", "IllegalReflectiveAccessLogHandler", true, "get", "(IllegalAccessException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AbstractTearOff", true, "resolveScript", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "AcceptHeader", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "select", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "select", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getFullUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getNext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getNextToken", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getPrev", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getRestOfUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", true, "AttributeKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", true, "findScript", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", true, "findScript", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", true, "trace", "(StaplerResponse,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildIndexDispatchers", "(MetaClass,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildIndexDispatchers", "(MetaClass,List)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildViewDispatchers", "(MetaClass,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Class,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "optional", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardingFunction", true, "ForwardingFunction", "(Function)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Function$InstanceFunction", true, "InstanceFunction", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Function", true, "contextualize", "(Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "Function", true, "getParameterNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "FunctionList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "FunctionList", "(Function[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "annotated", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "name", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "prefix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "signature", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "signatureStartsWith", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "union", "(FunctionList)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "union", "(FunctionList)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "webMethodsLegacy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", false, "HttpRedirect", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", false, "HttpRedirect", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(Throwable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(int,Throwable)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "redirectTo", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "redirectTo", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "JavaScriptMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClass", true, "getPostConstructMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClass", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClassLoader", true, "MetaClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClassLoader", true, "get", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", true, "NoStaplerConstructorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", true, "RawHtmlArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", true, "union", "(Annotation[],Annotation[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", true, "union", "(Annotation[],Annotation[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "getView", "(Klass,Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "getView", "(Klass,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "ResponseImpl", "(Stapler,HttpServletResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "ResponseImpl", "(Stapler,HttpServletResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "SingleLinkedList", "(Object,SingleLinkedList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "SingleLinkedList", "(Object,SingleLinkedList)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "grow", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "grow", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "escape", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getViewURL", "(Class,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getWebApp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "htmlSafeArgument", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "htmlSafeArguments", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "bindJSON", "(Type,Class,Object)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "findAncestor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "findAncestor", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getAncestors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getBindInterceptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getFileItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getOriginalRequestURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getOriginalRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getStapler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getSubmittedForm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Class,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Klass,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getWebApp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptor", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptor", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptpr", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptpr", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindListener", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindListener", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getCompressedOutputStream", "(HttpServletRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getCompressedWriter", "(HttpServletRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getJsonConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "setJsonConfig", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponseWrapper", true, "StaplerResponseWrapper", "(StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponseWrapper", true, "getWrapped", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "StaticViewFacet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "StaticViewFacet", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "addExtension", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "assembleOriginalRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "assembleRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "decode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "next", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "peek", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "prev", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TraversalMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "WebApp", "(ServletContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "get", "(ServletContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getCrumbIssuer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getDispatchValidator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getDispatchersFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForDoActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForGetMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredDispatchTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredDoActionTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredFieldTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredGetterTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getJsonInErrorMessageSanitizer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Klass)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Klass)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getResponseRenderers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getSomeStapler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setCrumbIssuer", "(CrumbIssuer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setDispatchValidator", "(DispatchValidator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setDispatchersFilter", "(DispatchersFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForDoActions", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForFields", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForGetMethods", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredDispatchTriggerListener", "(FilteredDispatchTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredDoActionTriggerListener", "(FilteredDoActionTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredFieldTriggerListener", "(FilteredFieldTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredGetterTriggerListener", "(FilteredGetterTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setJsonInErrorMessageSanitizer", "(JsonInErrorMessageSanitizer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WrongTypeException", true, "WrongTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["org.kohsuke.stapler.bind", "Bound", "getTarget", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", "getURL", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", "release", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable$Table", "doEnableLogging", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "bindWeak", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "getTable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "releaseMe", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "activate", "(ServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "getUncaughtExceptionHandler", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "has", "(ServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "setUncaughtExceptionHandler", "(ServletContext,UncaughtExceptionHandler)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "CompressionServletResponse", "(HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "activate", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "close", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "UncaughtExceptionHandler", "reportException", "(Throwable,ServletContext,HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "as", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(File)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(Map)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(Properties)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "fromEnvironmentVariables", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "fromSystemProperties", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredDispatchTriggerListener", "onDispatchTrigger", "(StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredDoActionTriggerListener", "onDoActionTrigger", "(Function,StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredFieldTriggerListener", "onFieldTrigger", "(FieldRef,StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredGetterTriggerListener", "onGetterTrigger", "(Function,StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "endArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "endObject", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "getExportConfig", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "name", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "startArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "startObject", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "type", "(Type,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "value", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "valueNull", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "valuePrimitive", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "getFlavor", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "isPrettyPrint", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "isSkipIfFail", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportInterceptor", "getValue", "(Property,Object,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", "createDataWriter", "(Object,Writer,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NamedPathPruner", "NamedPathPruner", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(String,Throwable,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(Throwable,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "getType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getGenericType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getJavadoc", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getValue", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", "Range", "(int,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "add", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "generateSchema", "(Result)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "getXmlTypeName", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner$ByDepth", "ByDepth", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", "accept", "(Object,Property)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", "getRange", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", "erasure", "(Type)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", "has", "(Kind)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", "write", "(StaplerRequest,XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", "get", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "get", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "isIncluded", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "writeSpooled", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", "NoSuchAdjunctException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "ErrorObject", "getMessage", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", "commit", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", "newInputStream", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", "IOException2", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(ByteBuffer,Charset,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(ByteBuffer,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,Charset,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,Charset,boolean,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,boolean,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "doProgressText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "isComplete", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "markAsComplete", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "readAll", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "writeLogTo", "(long,OutputStream)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "writeLogTo", "(long,Writer)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LineEndNormalizingWriter", "LineEndNormalizingWriter", "(Writer)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework", "AbstractWebAppMain", "getApplication", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "Interceptor", "invoke", "(StaplerRequest,StaplerResponse,Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovierJellyScript", "run", "(JellyBuilder)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "adjunct", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "getMy", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "getServletContext", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "img", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "include", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "include", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "methodMissing", "(String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "namespace", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "raw", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "redirectToDom", "(Closure)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "set", "(String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "taglib", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "text", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "createInvoker", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "endPrefixMapping", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "startPrefixMapping", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeConstraintsTag", "setExpr", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setDeprecated", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setName", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setSince", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setType", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setUse", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", "setFile", "(File)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", "setUrl", "(URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "create", "(OutputStream)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "create", "(Writer,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "useHTML", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setClass", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setClazz", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setOptional", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", "makeEscapingExpression", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", "createContext", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", "getTagLibrary", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", "serveIndexJelly", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyCompatibleFacet", "getClassTearOffTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyCompatibleFacet", "getScriptExtensions", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyFacet", "setExpressionFactory", "(ServletContextEvent,ExpressionFactory)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyTagFileLoader", "discover", "(ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyTagFileLoader", "load", "(CustomTagLibrary,String,ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ReallyStaticTagLibrary", "createTagScript", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ScriptInvoker", "invokeScript", "(StaplerRequest,StaplerResponse,Script,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ScriptInvoker", "invokeScript", "(StaplerRequest,StaplerResponse,Script,Object,XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StatusCodeTag", "setValue", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", "JsonHttpResponse", "(Throwable,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang.util", "FieldRefFilter", "wrap", "(Field)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang.util", "MethodRefFilter", "wrap", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "AnnotatedRef", "getAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "AnnotatedRef", "hasAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef$Filter", "keep", "(FieldRef)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "get", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getQualifiedName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getReturnType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getSignature", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "isRoutable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "isStatic", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "wrap", "(Field)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getAncestors", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getDeclaredFields", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getDeclaredMethods", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getFields", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getFunctions", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getResource", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getSuperClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "isArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "isMap", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "java", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "toJavaClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getAncestors", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getDeclaredFields", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getDeclaredMethods", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getFunctions", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getResource", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getSuperClass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "isArray", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "isMap", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "toJavaClass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "invoke", "(Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "isRoutable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "wrap", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", "getRelativePath", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AnnotationHandler", "parse", "(StaplerRequest,Annotation,Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "appScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "get", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "get", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "remove", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "remove", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "requestScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "sessionScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "set", "(HttpServletRequest,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "set", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "BindInterceptor", "instantiate", "(Class,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "BindInterceptor", "onConvert", "(Type,Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", "clearScripts", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "ClassDescriptor", "(Class,Class[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadConstructorParamNames", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadParameterNames", "(Constructor)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadParameterNames", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "doCrumb", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "issueCrumb", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "issueCrumb", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "validateCrumb", "(StaplerRequest,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "allowDispatch", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "isDispatchAllowed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "isDispatchAllowed", "(StaplerRequest,StaplerResponse,String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "requireDispatchAllowed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "anonymizedTraceEval", "(StaplerRequest,StaplerResponse,Object,String,String[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "dispatch", "(RequestImpl,ResponseImpl,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "isTraceEnabled", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "trace", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "trace", "(StaplerRequest,StaplerResponse,String,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object,String,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace$ApplicationTracer", "trace", "(StaplerRequest,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", "get", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", "printHtml", "(PrintWriter)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildFallbackDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildIndexDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildViewDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "discover", "(ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "discoverExtensions", "(Class,ClassLoader[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "getKlass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "handleIndexRequest", "(RequestImpl,ResponseImpl,Object,MetaClass)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(RequestDispatcher)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getAnnotations", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getCheckedExceptionTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getDeclaringClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getDisplayName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getGenericParameterTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterAnnotations", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterNames", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getQualifiedName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getReturnType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getSignature", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "invoke", "(StaplerRequest,StaplerResponse,Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "isStatic", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "returnNull", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList$Filter", "keep", "(Function)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", "fromContextPath", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponse", "generateResponse", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponseRenderer", "generateResponse", "(StaplerRequest,StaplerResponse,Object,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "errorWithoutStack", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forbidden", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToPreviousPage", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToView", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToView", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "html", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "literalHtml", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "notFound", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "ok", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "plainText", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectToContextRoot", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectToDot", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectViaContextPath", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectViaContextPath", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "staticResource", "(URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "staticResource", "(URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "status", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "text", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "LocaleDrivenResourceProvider", "lookup", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "MethodHandleFactory", "get", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", "NoStaplerConstructorException", "(String,Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", "NoStaplerConstructorException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", "getVmDefaultValueFor", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", "empty", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "buildResourcePaths", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "forward", "(RequestDispatcher,StaplerRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getClassLoader", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrent", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrentRequest", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrentResponse", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "invoke", "(HttpServletRequest,HttpServletResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "isSocketException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "lookupConverter", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "setClassLoader", "(ServletContext,ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "setRoot", "(ServletContextEvent,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerFallback", "getStaplerFallback", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSON", "(Class,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSON", "(Object,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSONToList", "(Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Class,String,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParametersToList", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(Calendar,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(Date,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(long,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(long,StaplerResponse,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "createJavaScriptProxy", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "findAncestorObject", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getBoundObjectTable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getReferer", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRequestURIWithQueryString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRequestURLWithQueryString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRootPath", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "hasParameter", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "isJavaScriptProxyCall", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "forward", "(Object,String,StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "forwardToPreviousPage", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "reverseProxyTo", "(URL,StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "sendRedirect2", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "sendRedirect", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveExposedBean", "(StaplerRequest,Object,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveExposedBean", "(StaplerRequest,Object,Flavor)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,long,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveLocalizedFile", "(StaplerRequest,URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveLocalizedFile", "(StaplerRequest,URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "getTearOff", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "loadTearOff", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "setTearOff", "(Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "countRemainingTokens", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "hasMore", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "nextAsInt", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "nextAsLong", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "clearMetaClassCache", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "clearScripts", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getApp", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getCurrent", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getFacet", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getKlass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "setApp", "(Object)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/hudson.model.model.yml b/java/ql/lib/ext/hudson.model.model.yml index 023265b2c3d..95aebc69028 100644 --- a/java/ql/lib/ext/hudson.model.model.yml +++ b/java/ql/lib/ext/hudson.model.model.yml @@ -16,3 +16,9 @@ extensions: data: - ["hudson.model", "Node", True, "createPath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["hudson.model", "DirectoryBrowserSupport$Path", False, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[0]", "Argument[this].SyntheticField[hudson.model.DirectoryBrowserSupport$Path.href]", "taint", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["hudson.model", "Descriptor", True, "configure", "", "", "Parameter", "remote", "manual"] + - ["hudson.model", "Descriptor", True, "newInstance", "", "", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/hudson.model.yml b/java/ql/lib/ext/hudson.model.yml index 5ba20fce0c6..08d56be275e 100644 --- a/java/ql/lib/ext/hudson.model.yml +++ b/java/ql/lib/ext/hudson.model.yml @@ -3,24 +3,68 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson", "FilePath", False, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] - - ["hudson", "FilePath", False, "copyFrom", "(URL)", "", "Argument[0]", "path-injection", "manual"] - - ["hudson", "FilePath", False, "copyFrom", "(FileItem)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(DirScanner,FilePath,String)", "", "Argument[1]", "file-content-store", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,FilePath)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[2]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "copyTo", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", False, "installIfNecessaryFrom", "(URL,TaskListener,String)", "", "Argument[0]", "request-forgery", "ai-manual"] - - ["hudson", "FilePath", False, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyFrom", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(URL)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FileItem)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "", "", "Argument[this]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String)", "", "Argument[1]", "file-content-store", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,FilePath)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyTo", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyTo", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyToWithPermission", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyToWithPermission", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "installIfNecessaryFrom", "(URL,TaskListener,String)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["hudson", "FilePath", True, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "openInputStream", "(File,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "read", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "read", "(FilePath,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "readFromOffset", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "readToString", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "renameTo", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "renameTo", "", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "write", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "write", "(String,String)", "", "Argument[0]", "file-content-store", "manual"] + - ["hudson", "Launcher$ProcStarter", False, "cmds", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher$ProcStarter", False, "cmdAsSingleString", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher", True, "launch", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher", True, "launchChannel", "", "", "Argument[0]", "command-injection", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["hudson", "Plugin", True, "configure", "", "", "Parameter", "remote", "manual"] + - ["hudson", "Plugin", True, "newInstance", "", "", "Parameter", "remote", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: - - ["hudson", "FilePath", False, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "FilePath", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "FilePath", "(FilePath,String)", "", "Argument[0..1]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "FilePath", "(VirtualChannel,String)", "", "Argument[1]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "Util", True, "nullify", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixNull", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixEmpty", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixEmptyAndTrim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "getFileName", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "join", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "encodeRFC2396", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "wrapToErrorSpan", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fileToPath", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "xmlEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "escape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "singleQuote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "rawEncode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "encode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fromHexString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "toHexString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "tokenize", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/lib/ext/hudson.util.model.yml b/java/ql/lib/ext/hudson.util.model.yml index 39c5b55f349..1ac3aa8c10a 100644 --- a/java/ql/lib/ext/hudson.util.model.yml +++ b/java/ql/lib/ext/hudson.util.model.yml @@ -7,6 +7,10 @@ extensions: - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "ClasspathBuilder", True, "add", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "FormValidation", True, "errorWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "okWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "respond", "", "", "Argument[1]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "warningWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] - ["hudson.util", "IOUtils", True, "mkdirs", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "StreamTaskListener", True, "StreamTaskListener", "(File,boolean,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "TextFile", True, "delete", "()", "", "Argument[this]", "path-injection", "manual"] @@ -15,10 +19,28 @@ extensions: - ["hudson.util", "TextFile", True, "lines", "()", "", "Argument[this]", "path-injection", "manual"] - ["hudson.util", "TextFile", True, "read", "()", "", "Argument[this]", "path-injection", "manual"] - ["hudson.util", "TextFile", True, "readTrim", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[this]", "path-injection", "manual"] - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[0]", "file-content-store", "manual"] + - ["hudson.util", "HttpResponses", True, "staticResource", "(File)", "", "Argument[0]", "path-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: + - ["hudson.util", "ArgumentListBuilder", True, "ArgumentListBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "add", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "clone", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "prepend", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toCommandArray", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toList", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toWindowsCommand", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + # ArgumentListBuilder fluent methods + - ["hudson.util", "ArgumentListBuilder", True, "add", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePair", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePairs", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePairsFromPropertyString", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addMasked", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addQuoted", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addTokenized", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "prepend", "", "", "Argument[this]", "ReturnValue", "value", "manual"] - ["hudson.util", "QuotedStringTokenizer", True, "tokenize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["hudson.util", "TextFile", True, "TextFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/io.netty.handler.ssl.model.yml b/java/ql/lib/ext/io.netty.handler.ssl.model.yml index 42cf9892f81..f63a7a3906f 100644 --- a/java/ql/lib/ext/io.netty.handler.ssl.model.yml +++ b/java/ql/lib/ext/io.netty.handler.ssl.model.yml @@ -5,3 +5,5 @@ extensions: data: - ["io.netty.handler.ssl", "OpenSslServerContext", False, "OpenSslServerContext", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["io.netty.handler.ssl", "SslContextBuilder", False, "forServer", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(InputStream)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index e0920d7df16..83e57a68c74 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -3,6 +3,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["java.io", "File", False, "File", "(File,String)", "", "Argument[1]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(String,String)", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "path-injection", "ai-manual"] - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -11,6 +15,7 @@ extensions: - ["java.io", "FileOutputStream", False, "write", "", "", "Argument[0]", "file-content-store", "manual"] - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileSystem", True, "createDirectory", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileWriter", False, "FileWriter", "", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "PrintStream", False, "PrintStream", "(File)", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index ed14b2495a3..8625a68caa0 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -8,6 +8,9 @@ extensions: - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + # These are potential vulnerabilities, but not for command-injection. No query for this kind of vulnerability currently exists. + # - ["java.lang", "Runtime", False, "load", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] + # - ["java.lang", "Runtime", False, "loadLibrary", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] # These are modeled in plain CodeQL. TODO: migrate them. # - ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] # - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "command-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index e4519fbc071..5e3f32b5e6f 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -18,6 +18,7 @@ extensions: - ["java.nio.file", "Files", False, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # the FileStore class is unlikely to be used for later sanitization - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "move", "", "", "Argument[1]", "path-injection", "manual"] @@ -26,6 +27,7 @@ extensions: - ["java.nio.file", "Files", False, "newBufferedWriter", "", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "newOutputStream", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "probeContentType", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # accesses the file based on user input, but only reads its content type from it - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -40,12 +42,23 @@ extensions: - ["java.nio.file", "Files", True, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", True, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", True, "newOutputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "FileSystem", False, "getPath", "", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "of", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "of", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "resolve", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "resolveSibling", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Paths", False, "get", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - ["java.nio.file", "SecureDirectoryStream", True, "deleteDirectory", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "SecureDirectoryStream", True, "deleteFile", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: + - ["java.nio.file", "Files", False, "find", "(Path,int,BiPredicate,FileVisitOption[])", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "find", "(Path,int,BiPredicate,FileVisitOption[])", "", "Argument[2]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "list", "(Path)", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "readSymbolicLink", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] # this can be used to enumerate a file system - ["java.nio.file", "Files", True, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "newBufferedReader", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "newByteChannel", "(Path,OpenOption[])", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/java.sql.model.yml b/java/ql/lib/ext/java.sql.model.yml index c93a89cfd2c..58985c886b5 100644 --- a/java/ql/lib/ext/java.sql.model.yml +++ b/java/ql/lib/ext/java.sql.model.yml @@ -21,7 +21,6 @@ extensions: extensible: summaryModel data: - ["java.sql", "Connection", True, "nativeSQL", "(String)", "", "Argument[0]", "ReturnValue", "taint", "hq-manual"] - - ["java.sql", "PreparedStatement", True, "setString", "(int,String)", "", "Argument[1]", "Argument[this]", "value", "manual"] - ["java.sql", "ResultSet", True, "getString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - addsTo: @@ -31,13 +30,14 @@ extensions: - ["java.sql", "Connection", "createStatement", "()", "summary", "manual"] - ["java.sql", "PreparedStatement", "executeUpdate", "()", "summary", "manual"] - ["java.sql", "PreparedStatement", "executeQuery", "()", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setInt", "(int,int)", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setLong", "(int,long)", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setString", "(int,String)", "summary", "manual"] - ["java.sql", "ResultSet", "next", "()", "summary", "manual"] - ["java.sql", "Statement", "close", "()", "summary", "manual"] # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. - - ["java.sql", "PreparedStatement", "setInt", "(int,int)", "summary", "manual"] # value-numeric - - ["java.sql", "PreparedStatement", "setLong", "(int,long)", "summary", "manual"] # value-numeric - ["java.sql", "ResultSet", "getInt", "(int)", "summary", "manual"] # taint-numeric - ["java.sql", "ResultSet", "getInt", "(String)", "summary", "manual"] # taint-numeric - ["java.sql", "ResultSet", "getLong", "(String)", "summary", "manual"] # taint-numeric diff --git a/java/ql/lib/ext/kotlin.io.model.yml b/java/ql/lib/ext/kotlin.io.model.yml index 98de45df9d6..b748e04a292 100644 --- a/java/ql/lib/ext/kotlin.io.model.yml +++ b/java/ql/lib/ext/kotlin.io.model.yml @@ -11,6 +11,8 @@ extensions: pack: codeql/java-all extensible: summaryModel data: + - ["kotlin.io", "CloseableKt", False, "use", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["kotlin.io", "CloseableKt", False, "use", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - ["kotlin.io", "FilesKt", False, "normalize", "(File)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["kotlin.io", "FilesKt", False, "relativeTo", "(File,File)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["kotlin.io", "FilesKt", False, "relativeTo", "(File,File)", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/kotlin.model.yml b/java/ql/lib/ext/kotlin.model.yml new file mode 100644 index 00000000000..ea275a78515 --- /dev/null +++ b/java/ql/lib/ext/kotlin.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["kotlin", "StandardKt", False, "with", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["kotlin", "StandardKt", False, "with", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] diff --git a/java/ql/lib/ext/okhttp3.model.yml b/java/ql/lib/ext/okhttp3.model.yml index 2368292dab7..a0662408708 100644 --- a/java/ql/lib/ext/okhttp3.model.yml +++ b/java/ql/lib/ext/okhttp3.model.yml @@ -58,3 +58,4 @@ extensions: - ["okhttp3", "HttpUrl$Builder", False, "setQueryParameter", "", "", "Argument[this]", "ReturnValue", "value", "manual"] - ["okhttp3", "HttpUrl$Builder", False, "setQueryParameter", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["okhttp3", "HttpUrl$Builder", False, "username", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["okhttp3", "Request$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/org.antlr.runtime.model.yml b/java/ql/lib/ext/org.antlr.runtime.model.yml new file mode 100644 index 00000000000..db66062c682 --- /dev/null +++ b/java/ql/lib/ext/org.antlr.runtime.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.antlr.runtime", "ANTLRFileStream", True, "ANTLRFileStream", "(String,String)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml b/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml new file mode 100644 index 00000000000..2c3f221abd7 --- /dev/null +++ b/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.fusesource.leveldbjni", "JniDBFactory", True, "open", "(File,Options)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.influxdb.model.yml b/java/ql/lib/ext/org.influxdb.model.yml new file mode 100644 index 00000000000..00dc8277407 --- /dev/null +++ b/java/ql/lib/ext/org.influxdb.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.influxdb", "InfluxDBFactory", False, "connect", "(String,String,String,Builder)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml new file mode 100644 index 00000000000..9152eb7b55b --- /dev/null +++ b/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler.bind", "JavaScriptMethod", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml new file mode 100644 index 00000000000..a06683144e0 --- /dev/null +++ b/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler.json", "SubmittedForm", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler.json", "JsonBody", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.model.yml index 7a242051485..63bbdbfd52a 100644 --- a/java/ql/lib/ext/org.kohsuke.stapler.model.yml +++ b/java/ql/lib/ext/org.kohsuke.stapler.model.yml @@ -4,4 +4,46 @@ extensions: extensible: sinkModel data: - ["org.kohsuke.stapler", "HttpResponses", True, "redirectTo", "(String)", "", "Argument[0]", "url-redirection", "ai-manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "redirectTo", "(int,String)", "", "Argument[1]", "url-redirection", "manual"] - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL,long)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "html", "(String)", "", "Argument[0]", "html-injection", "manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "literalHtml", "(String)", "", "Argument[0]", "html-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "forward", "(Object,String,StaplerRequest)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect2", "(String)", "", "Argument[0]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(int,String)", "", "Argument[1]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(String)", "", "Argument[0]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,URL)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,URL,long)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveLocalizedFile", "(StaplerRequest,URL)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveLocalizedFile", "(StaplerRequest,URL,long)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,long,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,int,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,int,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "reverseProxyTo", "(URL,StaplerRequest)", "", "Argument[0]", "request-forgery", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRequestURIWithQueryString", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRequestURLWithQueryString", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getReferer", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getOriginalRequestURI", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getSubmittedForm", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getFileItem", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParametersToList", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParameters", "", "", "Argument[0]", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParameters", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSON", "", "", "Argument[0]", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSON", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSONToList", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameter", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterMap", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterNames", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterValues", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRestOfPath", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "QueryParameter", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "Header", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "DataBoundConstructor", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "DataBoundSetter", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.springframework.core.io.model.yml b/java/ql/lib/ext/org.springframework.core.io.model.yml new file mode 100644 index 00000000000..b6dd35c8096 --- /dev/null +++ b/java/ql/lib/ext/org.springframework.core.io.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "(String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.yaml.snakeyaml.model.yml b/java/ql/lib/ext/org.yaml.snakeyaml.model.yml new file mode 100644 index 00000000000..e52ef0679bc --- /dev/null +++ b/java/ql/lib/ext/org.yaml.snakeyaml.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.yaml.snakeyaml", "Yaml", True, "load", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index ada2ac9e999..699c78730fd 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/java-all -version: 0.6.3-dev +version: 0.6.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/typetracking: ${workspace} diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 0e0d0acea3f..92c81650bc3 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1809,9 +1809,6 @@ class LValue extends VarAccess { * are source expressions of the assignment. */ Expr getRhs() { exists(Assignment e | e.getDest() = this and e.getSource() = result) } - - /** DEPRECATED: Alias for getRhs */ - deprecated Expr getRHS() { result = this.getRhs() } } /** diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index f60fdcc8e5d..fcf31e3be0d 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -987,6 +987,17 @@ private string getAPublicObjectMethodSignature() { ) } +pragma[nomagic] +private predicate interfaceInheritsOverridingNonAbstractMethod(Interface interface, Method m) { + interface.inherits(m) and + not m.isAbstract() and + m.overrides(_) +} + +bindingset[m] +pragma[inline_late] +private Method getAnOverridden(Method m) { m.overrides(result) } + private Method getAnAbstractMethod(Interface interface) { interface.inherits(result) and result.isAbstract() and @@ -995,9 +1006,8 @@ private Method getAnAbstractMethod(Interface interface) { // Make sure that there is no other non-abstract method // (e.g. `default`) which overrides the abstract one not exists(Method m | - interface.inherits(m) and - not m.isAbstract() and - m.overrides(result) + interfaceInheritsOverridingNonAbstractMethod(interface, m) and + result = getAnOverridden(m) ) } diff --git a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll index 6b7736cb70d..3563176f4b0 100644 --- a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll +++ b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll @@ -6,15 +6,6 @@ import java -/** - * DEPRECATED: Use `conditionCheckMethodArgument` instead. - * Holds if `m` is a non-overridable method that checks that its first argument - * is equal to `checkTrue` and throws otherwise. - */ -deprecated predicate conditionCheckMethod(Method m, boolean checkTrue) { - conditionCheckMethodArgument(m, 0, checkTrue) -} - /** * Holds if `m` is a non-overridable method that checks that its zero-indexed `argument` * is equal to `checkTrue` and throws otherwise. diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index bb8485cd601..c04126d5f7f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -87,6 +87,7 @@ private import internal.FlowSummaryImplSpecific as FlowSummaryImplSpecific private import internal.AccessPathSyntax private import ExternalFlowExtensions as Extensions private import FlowSummary +private import codeql.mad.ModelValidation as SharedModelVal /** * A class for activating additional model rows. @@ -265,86 +266,17 @@ module ModelValidation { ) } - private class OutdatedSinkKind extends string { - OutdatedSinkKind() { - this = - [ - "sql", "url-redirect", "xpath", "ssti", "logging", "groovy", "jexl", "mvel", "xslt", - "ldap", "pending-intent-sent", "intent-start", "set-hostname-verifier", - "header-splitting", "xss", "write-file", "create-file", "read-file", "open-url", - "jdbc-url" - ] - } + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } - private string replacementKind() { - this = ["sql", "xpath", "groovy", "jexl", "mvel", "xslt", "ldap"] and - result = this + "-injection" - or - this = "url-redirect" and result = "url-redirection" - or - this = "ssti" and result = "template-injection" - or - this = "logging" and result = "log-injection" - or - this = "pending-intent-sent" and result = "pending-intents" - or - this = "intent-start" and result = "intent-redirection" - or - this = "set-hostname-verifier" and result = "hostname-verification" - or - this = "header-splitting" and result = "response-splitting" - or - this = "xss" and result = "html-injection\" or \"js-injection" - or - this = "write-file" and result = "file-content-store" - or - this = ["create-file", "read-file"] and result = "path-injection" - or - this = ["open-url", "jdbc-url"] and result = "request-forgery" - } + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } - string outdatedMessage() { - result = - "The kind \"" + this + "\" is outdated. Use \"" + this.replacementKind() + "\" instead." - } + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } + + predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) } } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) - or - exists(string kind, string msg | sinkModel(_, _, _, _, _, _, _, kind, _) | - not kind = - [ - "request-forgery", "jndi-injection", "ldap-injection", "sql-injection", "log-injection", - "mvel-injection", "xpath-injection", "groovy-injection", "html-injection", "js-injection", - "ognl-injection", "intent-redirection", "pending-intents", "url-redirection", - "path-injection", "file-content-store", "hostname-verification", "response-splitting", - "information-leak", "xslt-injection", "jexl-injection", "bean-validation", - "template-injection", "fragment-injection", "command-injection" - ] and - not kind.matches("regex-use%") and - not kind.matches("qltest%") and - msg = "Invalid kind \"" + kind + "\" in sink model." and - // The part of this message that refers to outdated sink kinds can be deleted after June 1st, 2024. - if kind instanceof OutdatedSinkKind - then result = msg + " " + kind.(OutdatedSinkKind).outdatedMessage() - else result = msg - ) - or - exists(string kind | sourceModel(_, _, _, _, _, _, _, kind, _) | - not kind = ["remote", "contentprovider", "android-external-storage-dir"] and - not kind.matches("qltest%") and - result = "Invalid kind \"" + kind + "\" in source model." - ) - or - exists(string kind | neutralModel(_, _, _, _, kind, _) | - not kind = ["summary", "source", "sink"] and - result = "Invalid kind \"" + kind + "\" in neutral model." - ) - } + private module KindVal = SharedModelVal::KindValidation; private string getInvalidModelSignature() { exists( @@ -387,7 +319,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll index d26aa5d35f6..f049a0cb37b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll @@ -36,6 +36,14 @@ abstract class RemoteFlowSource extends DataFlow::Node { abstract string getSourceType(); } +/** + * A module for importing frameworks that define flow sources. + */ +private module FlowSources { + private import semmle.code.java.frameworks.hudson.Hudson + private import semmle.code.java.frameworks.stapler.Stapler +} + private class ExternalRemoteFlowSource extends RemoteFlowSource { ExternalRemoteFlowSource() { sourceNode(this, "remote") } diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll index 9a187c027ff..1619965f0f0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll @@ -23,6 +23,7 @@ private module Frameworks { private import semmle.code.java.frameworks.Properties private import semmle.code.java.frameworks.Protobuf private import semmle.code.java.frameworks.ratpack.RatpackExec + private import semmle.code.java.frameworks.stapler.Stapler private import semmle.code.java.JDK } diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll index 6d6af4f82b4..e45ba0be27e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll @@ -149,8 +149,9 @@ class SummarizedCallableBase extends TSummarizedCallableBase { or result = this.asSyntheticCallable().getParameterType(pos) or - exists(SyntheticCallable sc | sc = this.asSyntheticCallable() | - Impl::Private::summaryParameterNodeRange(this, pos) and + exists(SyntheticCallable sc, Impl::Private::SummaryNode p | sc = this.asSyntheticCallable() | + Impl::Private::summaryParameterNode(p, pos) and + this = p.getSummarizedCallable() and not exists(sc.getParameterType(pos)) and result instanceof TypeObject ) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index d4ff7ed0ac7..dd478b2a869 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -931,9 +931,6 @@ class SsaVariable extends TSsaVariable { this = TSsaUntracked(_, result) } - /** DEPRECATED: Alias for getCfgNode */ - deprecated ControlFlowNode getCFGNode() { result = this.getCfgNode() } - /** Gets a textual representation of this SSA variable. */ string toString() { none() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 6f53dbd02c1..6e41c803553 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -483,9 +483,6 @@ class BaseSsaVariable extends TBaseSsaVariable { this = TSsaEntryDef(_, result) } - /** DEPRECATED: Alias for getCfgNode */ - deprecated ControlFlowNode getCFGNode() { result = this.getCfgNode() } - string toString() { none() } Location getLocation() { result = this.getCfgNode().getLocation() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 22d79d7da15..8c44e7df5b0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -54,12 +54,7 @@ private module Cached { fa.getField() instanceof InstanceField and ia.isImplicitFieldQualifier(fa) ) } or - TSummaryInternalNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } or - TSummaryParameterNode(SummarizedCallable c, int pos) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) - } or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TFieldValueNode(Field f) cached @@ -132,8 +127,6 @@ module Public { or result = this.(ImplicitPostUpdateNode).getPreUpdateNode().getType() or - result = this.(SummaryParameterNode).getTypeImpl() - or result = this.(FieldValueNode).getField().getType() } @@ -378,8 +371,7 @@ module Private { result.asCallable() = n.(ImplicitInstanceAccess).getInstanceAccess().getEnclosingCallable() or result.asCallable() = n.(MallocNode).getClassInstanceExpr().getEnclosingCallable() or result = nodeGetEnclosingCallable(n.(ImplicitPostUpdateNode).getPreUpdateNode()) or - n = TSummaryInternalNode(result.asSummarizedCallable(), _) or - n = TSummaryParameterNode(result.asSummarizedCallable(), _) or + result.asSummarizedCallable() = n.(FlowSummaryNode).getSummarizedCallable() or result.asFieldScope() = n.(FieldValueNode).getField() } @@ -407,7 +399,7 @@ module Private { or this = getInstanceArgument(_) or - this.(SummaryNode).isArgumentOf(_, _) + this.(FlowSummaryNode).isArgumentOf(_, _) } /** @@ -424,7 +416,7 @@ module Private { or pos = -1 and this = getInstanceArgument(call.asCall()) or - this.(SummaryNode).isArgumentOf(call, pos) + this.(FlowSummaryNode).isArgumentOf(call, pos) } /** Gets the call in which this node is an argument. */ @@ -435,7 +427,7 @@ module Private { class ReturnNode extends Node { ReturnNode() { exists(ReturnStmt ret | this.asExpr() = ret.getResult()) or - this.(SummaryNode).isReturn() + this.(FlowSummaryNode).isReturn() } /** Gets the kind of this returned value. */ @@ -447,61 +439,57 @@ module Private { OutNode() { this.asExpr() instanceof MethodAccess or - this.(SummaryNode).isOut(_) + this.(FlowSummaryNode).isOut(_) } /** Gets the underlying call. */ DataFlowCall getCall() { result.asCall() = this.asExpr() or - this.(SummaryNode).isOut(result) + this.(FlowSummaryNode).isOut(result) } } /** * A data-flow node used to model flow summaries. */ - class SummaryNode extends Node, TSummaryInternalNode { - private SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; + class FlowSummaryNode extends Node, TFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) } - SummaryNode() { this = TSummaryInternalNode(c, state) } + SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() + } - override Location getLocation() { result = c.getLocation() } + override Location getLocation() { result = this.getSummarizedCallable().getLocation() } - override string toString() { result = "[summary] " + state + " in " + c } + override string toString() { result = this.getSummaryNode().toString() } /** Holds if this summary node is the `i`th argument of `call`. */ predicate isArgumentOf(DataFlowCall call, int i) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, i) + FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), i) } /** Holds if this summary node is a return node. */ - predicate isReturn() { FlowSummaryImpl::Private::summaryReturnNode(this, _) } + predicate isReturn() { FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), _) } /** Holds if this summary node is an out node for `call`. */ - predicate isOut(DataFlowCall call) { FlowSummaryImpl::Private::summaryOutNode(call, this, _) } + predicate isOut(DataFlowCall call) { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), _) + } } - SummaryNode getSummaryNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - result = TSummaryInternalNode(c, state) - } - - class SummaryParameterNode extends ParameterNode, TSummaryParameterNode { - private SummarizedCallable sc; - private int pos_; - - SummaryParameterNode() { this = TSummaryParameterNode(sc, pos_) } - - override Location getLocation() { result = sc.getLocation() } - - override string toString() { result = "[summary param] " + pos_ + " in " + sc } - - override predicate isParameterOf(DataFlowCallable c, int pos) { - c.asSummarizedCallable() = sc and pos = pos_ + class SummaryParameterNode extends ParameterNode, FlowSummaryNode { + SummaryParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _) } - Type getTypeImpl() { result = sc.getParameterType(pos_) } + private int getPosition() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) + } + + override predicate isParameterOf(DataFlowCallable c, int pos) { + c.asSummarizedCallable() = this.getSummarizedCallable() and pos = this.getPosition() + } } } @@ -523,10 +511,12 @@ private class MallocNode extends Node, TMallocNode { ClassInstanceExpr getClassInstanceExpr() { result = cie } } -private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { - private Node pre; +private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryNode pre; - SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + SummaryPostUpdateNode() { + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), pre.getSummaryNode()) + } override Node getPreUpdateNode() { result = pre } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 22f84241c96..216523023d9 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -85,7 +85,8 @@ predicate jumpStep(Node node1, Node node2) { any(AdditionalValueStep a).step(node1, node2) and node1.getEnclosingCallable() != node2.getEnclosingCallable() or - FlowSummaryImpl::Private::Steps::summaryJumpStep(node1, node2) + FlowSummaryImpl::Private::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -114,7 +115,8 @@ predicate storeStep(Node node1, Content f, Node node2) { or f instanceof ArrayContent and arrayStoreStep(node1, node2) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, f, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), f, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -145,7 +147,8 @@ predicate readStep(Node node1, Content f, Node node2) { or f instanceof CollectionContent and collectionReadStep(node1, node2) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, f, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), f, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -160,7 +163,7 @@ predicate clearsContent(Node n, Content c) { c.(FieldContent).getField() = fa.getField() ) or - FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -168,7 +171,7 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -176,7 +179,7 @@ predicate expectsContent(Node n, ContentSet c) { * possible flow. A single type is used for all numeric types to account for * numeric conversions, and otherwise the erasure is used. */ -DataFlowType getErasedRepr(Type t) { +RefType getErasedRepr(Type t) { exists(Type e | e = t.getErasure() | if e instanceof NumericOrCharType then result.(BoxedType).getPrimitiveType().getName() = "double" @@ -189,11 +192,18 @@ DataFlowType getErasedRepr(Type t) { t instanceof NullType and result instanceof TypeObject } +class DataFlowType extends SrcRefType { + DataFlowType() { this = getErasedRepr(_) } +} + +pragma[nomagic] +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { t1.getASourceSupertype+() = t2 } + pragma[noinline] DataFlowType getNodeType(Node n) { result = getErasedRepr(n.getTypeBound()) or - result = FlowSummaryImpl::Private::summaryNodeType(n) + result = FlowSummaryImpl::Private::summaryNodeType(n.(FlowSummaryNode).getSummaryNode()) } /** Gets a string representation of a type returned by `getErasedRepr`. */ @@ -232,6 +242,12 @@ class CastNode extends ExprNode { CastNode() { this.getExpr() instanceof CastingExpr } } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + private newtype TDataFlowCallable = TSrcCallable(Callable c) or TSummarizedCallable(SummarizedCallable c) or @@ -259,11 +275,9 @@ class DataFlowCallable extends TDataFlowCallable { class DataFlowExpr = Expr; -class DataFlowType = RefType; - private newtype TDataFlowCall = TCall(Call c) or - TSummaryCall(SummarizedCallable c, Node receiver) { + TSummaryCall(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } @@ -313,12 +327,12 @@ class SrcCall extends DataFlowCall, TCall { /** A synthesized call inside a `SummarizedCallable`. */ class SummaryCall extends DataFlowCall, TSummaryCall { private SummarizedCallable c; - private Node receiver; + private FlowSummaryImpl::Private::SummaryNode receiver; SummaryCall() { this = TSummaryCall(c, receiver) } /** Gets the data flow node that this call targets. */ - Node getReceiver() { result = receiver } + FlowSummaryImpl::Private::SummaryNode getReceiver() { result = receiver } override DataFlowCallable getEnclosingCallable() { result.asSummarizedCallable() = c } @@ -378,10 +392,7 @@ predicate forceHighPrecision(Content c) { } /** Holds if `n` should be hidden from path explanations. */ -predicate nodeIsHidden(Node n) { - n instanceof SummaryNode or - n instanceof SummaryParameterNode -} +predicate nodeIsHidden(Node n) { n instanceof FlowSummaryNode } class LambdaCallKind = Method; // the "apply" method in the functional interface @@ -399,7 +410,7 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { - receiver = call.(SummaryCall).getReceiver() and + receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() and getNodeDataFlowType(receiver) .getSourceDeclaration() .(FunctionalInterface) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index ff064cc8405..29758d4b972 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -183,7 +183,8 @@ private predicate simpleLocalFlowStep0(Node node1, Node node2) { node1.(ArgumentNode).argumentOf(any(DataFlowCall c | c.asCall() = ma), argNo) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(node1, node2, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(node1.(FlowSummaryNode).getSummaryNode(), + node2.(FlowSummaryNode).getSummaryNode(), true) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index e6379f6a170..9ea7c44c50c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -180,6 +180,11 @@ module Public { result = "Argument[" + getParameterPosition(pos) + "]" ) or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } @@ -505,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -530,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -559,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -574,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -582,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -605,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -618,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -626,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -634,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -647,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -662,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -675,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -691,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -703,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -713,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -722,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -736,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -748,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -763,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -789,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -801,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -813,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -840,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -852,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -862,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -884,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -909,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -936,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -951,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -962,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -976,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1344,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1357,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1377,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll index 1a0e06553d4..77780aa3a46 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll @@ -26,15 +26,17 @@ DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { result = -1 } -/** Gets the synthesized summary data-flow node for the given values. */ -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = getSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -SummaryCall summaryDataFlowCall(Node receiver) { result.getReceiver() = receiver } +SummaryCall summaryDataFlowCall(SummaryNode receiver) { result.getReceiver() = receiver } /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { result = c.getType() } +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { + result = getErasedRepr(c.getParameterType(pos)) +} + /** Gets the return type of kind `rk` for callable `c`. */ DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { result = getErasedRepr(c.getReturnType()) and diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll index af8f2273cbe..a43aa5be4f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll @@ -86,6 +86,7 @@ module LocalTaintFlow { cached private module Cached { private import DataFlowImplCommon as DataFlowImplCommon + private import DataFlowPrivate as DataFlowPrivate cached predicate forceCachingInSameStage() { DataFlowImplCommon::forceCachingInSameStage() } @@ -136,7 +137,8 @@ private module Cached { ) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(src.(DataFlowPrivate::FlowSummaryNode) + .getSummaryNode(), sink.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false) } /** diff --git a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll index 2213960222e..5c037258309 100644 --- a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll @@ -456,9 +456,6 @@ class ArbitraryXmlEntryPoint extends ReflectivelyConstructedClass { } } -/** DEPRECATED: Alias for ArbitraryXmlEntryPoint */ -deprecated class ArbitraryXMLEntryPoint = ArbitraryXmlEntryPoint; - /** A Selenium PageObject, created by a call to PageFactory.initElements(..). */ class SeleniumPageObjectEntryPoint extends ReflectivelyConstructedClass instanceof SeleniumPageObject { } diff --git a/java/ql/lib/semmle/code/java/frameworks/Networking.qll b/java/ql/lib/semmle/code/java/frameworks/Networking.qll index 8f86c8f75e7..c473cc9fc09 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Networking.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Networking.qll @@ -38,9 +38,6 @@ class UrlConnectionGetInputStreamMethod extends Method { } } -/** DEPRECATED: Alias for UrlConnectionGetInputStreamMethod */ -deprecated class URLConnectionGetInputStreamMethod = UrlConnectionGetInputStreamMethod; - /** The method `java.net.Socket::getInputStream`. */ class SocketGetInputStreamMethod extends Method { SocketGetInputStreamMethod() { diff --git a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll index 82e837862be..f2de51b2aab 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll @@ -128,9 +128,6 @@ class HttpServletRequestGetRequestUrlMethod extends Method { } } -/** DEPRECATED: Alias for HttpServletRequestGetRequestUrlMethod */ -deprecated class HttpServletRequestGetRequestURLMethod = HttpServletRequestGetRequestUrlMethod; - /** * The method `getRequestURI()` declared in `javax.servlet.http.HttpServletRequest`. */ @@ -339,9 +336,6 @@ class ServletWebXmlListenerType extends RefType { } } -/** DEPRECATED: Alias for ServletWebXmlListenerType */ -deprecated class ServletWebXMLListenerType = ServletWebXmlListenerType; - /** Holds if `m` is a request handler method (for example `doGet` or `doPost`). */ predicate isServletRequestMethod(Method m) { m.getDeclaringType() instanceof ServletClass and diff --git a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll index e19a6b43019..8bab6dfe581 100644 --- a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll +++ b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll @@ -29,9 +29,6 @@ class TypeUnboundIdLdapConnection extends Class { } } -/** DEPRECATED: Alias for TypeUnboundIdLdapConnection */ -deprecated class TypeUnboundIdLDAPConnection = TypeUnboundIdLdapConnection; - /*--- Methods ---*/ /** A method with the name `setBaseDN` declared in `com.unboundid.ldap.sdk.SearchRequest`. */ class MethodUnboundIdSearchRequestSetBaseDN extends Method { @@ -103,9 +100,6 @@ class MethodUnboundIdLdapConnectionSearch extends Method { } } -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionSearch */ -deprecated class MethodUnboundIdLDAPConnectionSearch = MethodUnboundIdLdapConnectionSearch; - /** A method with the name `asyncSearch` declared in `com.unboundid.ldap.sdk.LDAPConnection`. */ class MethodUnboundIdLdapConnectionAsyncSearch extends Method { MethodUnboundIdLdapConnectionAsyncSearch() { @@ -114,10 +108,6 @@ class MethodUnboundIdLdapConnectionAsyncSearch extends Method { } } -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionAsyncSearch */ -deprecated class MethodUnboundIdLDAPConnectionAsyncSearch = - MethodUnboundIdLdapConnectionAsyncSearch; - /** A method with the name `searchForEntry` declared in `com.unboundid.ldap.sdk.LDAPConnection`. */ class MethodUnboundIdLdapConnectionSearchForEntry extends Method { MethodUnboundIdLdapConnectionSearchForEntry() { @@ -125,7 +115,3 @@ class MethodUnboundIdLdapConnectionSearchForEntry extends Method { this.hasName("searchForEntry") } } - -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionSearchForEntry */ -deprecated class MethodUnboundIdLDAPConnectionSearchForEntry = - MethodUnboundIdLdapConnectionSearchForEntry; diff --git a/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll new file mode 100644 index 00000000000..c283c23a046 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll @@ -0,0 +1,38 @@ +/** Provides classes and predicates related to the Hudson framework. */ + +import java +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.frameworks.stapler.Stapler +private import semmle.code.java.security.XSS + +/** A method declared in a subtype of `hudson.model.Descriptor` that returns an `HttpResponse`. */ +class HudsonWebMethod extends Method { + HudsonWebMethod() { + this.getReturnType().(RefType).getASourceSupertype*() instanceof HttpResponse and + this.getDeclaringType().getASourceSupertype*().hasQualifiedName("hudson.model", "Descriptor") + } +} + +private class FilePathRead extends LocalUserInput { + FilePathRead() { + this.asExpr() + .(MethodAccess) + .getMethod() + .hasQualifiedName("hudson", "FilePath", + [ + "newInputStreamDenyingSymlinkAsNeeded", "openInputStream", "read", "readFromOffset", + "readToString" + ]) + } +} + +private class HudsonUtilXssSanitizer extends XssSanitizer { + HudsonUtilXssSanitizer() { + this.asExpr() + .(MethodAccess) + .getMethod() + // Not including xmlEscape because it only accounts for >, <, and &. + // It does not account for ", or ', which makes it an incomplete XSS sanitizer. + .hasQualifiedName("hudson", "Util", "escape") + } +} diff --git a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll index 79fd19f4ef2..f1395431a3c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll +++ b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll @@ -20,9 +20,6 @@ class JacksonJsonIgnoreAnnotation extends NonReflectiveAnnotation { } } -/** DEPRECATED: Alias for JacksonJsonIgnoreAnnotation */ -deprecated class JacksonJSONIgnoreAnnotation = JacksonJsonIgnoreAnnotation; - /** A type whose values may be serialized using the Jackson JSON framework. */ abstract class JacksonSerializableType extends Type { } diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll index faca537d171..7564dafa37e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll @@ -26,9 +26,6 @@ class PersistenceXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for PersistenceXmlFile */ -deprecated class PersistenceXMLFile = PersistenceXmlFile; - /** The root `persistence` XML element in a `persistence.xml` file. */ class PersistenceXmlRoot extends XmlElement { PersistenceXmlRoot() { diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll index 9323b3852b4..f44d77d89bd 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll @@ -35,9 +35,6 @@ class EjbJarXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for EjbJarXmlFile */ -deprecated class EjbJarXMLFile = EjbJarXmlFile; - /** The root `ejb-jar` XML element in an `ejb-jar.xml` file. */ class EjbJarRootElement extends XmlElement { EjbJarRootElement() { diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll index f85f36c37a3..13ed765638d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll @@ -16,9 +16,6 @@ class FacesConfigXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for FacesConfigXmlFile */ -deprecated class FacesConfigXMLFile = FacesConfigXmlFile; - /** * An XML element in a `FacesConfigXMLFile`. */ @@ -31,9 +28,6 @@ class FacesConfigXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for FacesConfigXmlElement */ -deprecated class FacesConfigXMLElement = FacesConfigXmlElement; - /** * An element in a JSF config file that declares a managed bean. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll index 1dd6dfd292f..966db95afce 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll @@ -100,9 +100,6 @@ class SpringBeanXmlAutowiredSetterMethod extends Method { } } -/** DEPRECATED: Alias for SpringBeanXmlAutowiredSetterMethod */ -deprecated class SpringBeanXMLAutowiredSetterMethod = SpringBeanXmlAutowiredSetterMethod; - /** * A callable that is annotated with `@Autowired`. * diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll index 9bbdaad9687..985565255b6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll @@ -13,9 +13,6 @@ class SpringCamelXmlElement extends SpringXmlElement { SpringCamelXmlElement() { this.getNamespace().getUri() = "http://camel.apache.org/schema/spring" } } -/** DEPRECATED: Alias for SpringCamelXmlElement */ -deprecated class SpringCamelXMLElement = SpringCamelXmlElement; - /** * An element in a Spring beans file that defines an Apache Camel context. * @@ -25,9 +22,6 @@ class SpringCamelXmlContext extends SpringCamelXmlElement { SpringCamelXmlContext() { this.getName() = "camelContext" } } -/** DEPRECATED: Alias for SpringCamelXmlContext */ -deprecated class SpringCamelXMLContext = SpringCamelXmlContext; - /** * An element in a Spring beans file that defines an Apache Camel route context. * @@ -38,9 +32,6 @@ class SpringCamelXmlRouteContext extends SpringCamelXmlElement { SpringCamelXmlRouteContext() { this.getName() = "routeContext" } } -/** DEPRECATED: Alias for SpringCamelXmlRouteContext */ -deprecated class SpringCamelXMLRouteContext = SpringCamelXmlRouteContext; - /** * An element in a Spring beans files that defines an Apache Camel route. * @@ -58,9 +49,6 @@ class SpringCamelXmlRoute extends SpringCamelXmlElement { } } -/** DEPRECATED: Alias for SpringCamelXmlRoute */ -deprecated class SpringCamelXMLRoute = SpringCamelXmlRoute; - /** * An element in a Spring bean file that is logically contained in an Apache Camel route. */ @@ -71,9 +59,6 @@ class SpringCamelXmlRouteElement extends SpringCamelXmlElement { } } -/** DEPRECATED: Alias for SpringCamelXmlRouteElement */ -deprecated class SpringCamelXMLRouteElement = SpringCamelXmlRouteElement; - /** * A reference to a Spring bean in an Apache Camel route defined in a Spring beans file. * @@ -98,9 +83,6 @@ class SpringCamelXmlBeanRef extends SpringCamelXmlRouteElement { RefType getBeanType() { result.getQualifiedName() = this.getAttribute("beanType").getValue() } } -/** DEPRECATED: Alias for SpringCamelXmlBeanRef */ -deprecated class SpringCamelXMLBeanRef = SpringCamelXmlBeanRef; - /** * A declaration of a target in an Apache Camel route defined in a Spring beans file. * @@ -120,9 +102,6 @@ class SpringCamelXmlToElement extends SpringCamelXmlRouteElement { deprecated string getURI() { result = this.getUri() } } -/** DEPRECATED: Alias for SpringCamelXmlToElement */ -deprecated class SpringCamelXMLToElement = SpringCamelXmlToElement; - /** * A declaration of a Apache Camel "method" expression defined in a Spring beans file. * @@ -147,6 +126,3 @@ class SpringCamelXmlMethodElement extends SpringCamelXmlElement { */ RefType getBeanType() { result.getQualifiedName() = this.getAttribute("beanType").getValue() } } - -/** DEPRECATED: Alias for SpringCamelXmlMethodElement */ -deprecated class SpringCamelXMLMethodElement = SpringCamelXmlMethodElement; diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll index f3380c45458..d285e9d0e6a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll @@ -23,9 +23,6 @@ class SpringXmlComponentScan extends SpringXmlElement { string getAProfileExpr() { result = this.getSpringBeanFile().getAProfileExpr() } } -/** DEPRECATED: Alias for SpringXmlComponentScan */ -deprecated class SpringXMLComponentScan = SpringXmlComponentScan; - /** * An annotation of a class that configures which packages are considered to be "base" packages * when performing the Spring component scan. diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll index 0d18749a63e..af0afa91f4c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll @@ -57,11 +57,6 @@ class SpringRemotingDestinationClass extends Class { */ SpringRemotingDestination getRemotingDestinationXml() { this = result.getSpringBean().getClass() } - /** DEPRECATED: Alias for getRemotingDestinationXml */ - deprecated SpringRemotingDestination getRemotingDestinationXML() { - result = this.getRemotingDestinationXml() - } - /** * Holds if the class is operating on an "include" or "exclude" basis. * diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll index efc7dfdaaf2..312cd659b39 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll @@ -37,6 +37,3 @@ class SpringXmlElement extends XmlElement { string getContentString() { result = this.allCharactersString() } } - -/** DEPRECATED: Alias for SpringXmlElement */ -deprecated class SpringXMLElement = SpringXmlElement; diff --git a/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll new file mode 100644 index 00000000000..f17090ed307 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll @@ -0,0 +1,124 @@ +/** Provides classes and predicates related to the Stapler framework. */ + +import java +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.dataflow.FlowSteps +private import semmle.code.java.dataflow.TypeFlow +private import semmle.code.java.frameworks.hudson.Hudson +private import semmle.code.java.frameworks.JavaxAnnotations + +/** + * A callable annotated with a Stapler `DataBound` annotation, + * or that has the `@stapler-constructor` Javadoc annotation. + */ +class DataBoundAnnotated extends Callable { + DataBoundAnnotated() { + exists(Annotation an | + an.getType() + .hasQualifiedName("org.kohsuke.stapler", ["DataBoundConstructor", "DataBoundSetter"]) + | + this = an.getAnnotatedElement() + ) + or + exists(Javadoc doc | doc.getAChild().getText().matches("%@stapler-constructor%") | + doc.getCommentedElement() = this + ) + } +} + +/** The interface `org.kohsuke.stapler.HttpResponse`. */ +class HttpResponse extends Interface { + HttpResponse() { this.hasQualifiedName("org.kohsuke.stapler", "HttpResponse") } +} + +/** + * A remote flow source for parameters annotated with an annotation + * that is itself annotated with `InjectedParameter`. + * + * Such parameters are populated with user-provided data by Stapler. + */ +private class InjectedParameterSource extends RemoteFlowSource { + InjectedParameterSource() { + this.asParameter().getAnAnnotation().getType() instanceof InjectedParameterAnnotatedType + } + + override string getSourceType() { result = "Stapler injected parameter" } +} + +/** + * A dataflow step from the `HttpResponse` return value of a `HudsonWebMethod` + * to the instance parameter of the `generateResponse` method of the appropriate subtype of `HttpResponse`. + * + * This models the rendering process of an `HttpResponse` by Stapler. + */ +private class HttpResponseGetDescriptionStep extends AdditionalValueStep { + override predicate step(DataFlow::Node n1, DataFlow::Node n2) { + exists(ReturnStmt s, GenerateResponseMethod m | + s.getEnclosingCallable() instanceof HudsonWebMethod and + boundOrStaticType(s.getResult(), m.getDeclaringType().getADescendant()) + | + n1.asExpr() = s.getResult() and + n2.(DataFlow::InstanceParameterNode).getCallable() = m + ) + } +} + +/** + * A dataflow step from the post-update node of an instance access in a `DataBoundAnnotated` method + * to the instance parameter of a `PostConstruct` method of the same type. + * + * This models the construction process of a `DataBound` object in Stapler. + */ +private class PostConstructDataBoundAdditionalStep extends AdditionalValueStep { + override predicate step(DataFlow::Node n1, DataFlow::Node n2) { + exists(PostConstructDataBoundMethod postConstruct, DataBoundAnnotated input | + postConstruct.getDeclaringType() = input.getDeclaringType() + | + n1.(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .(DataFlow::InstanceAccessNode) + .getEnclosingCallable() = input and + n2.(DataFlow::InstanceParameterNode).getCallable() = postConstruct + ) + } +} + +/** An annotation type annotated with the `InjectedParameter` annotation. */ +private class InjectedParameterAnnotatedType extends AnnotationType { + InjectedParameterAnnotatedType() { + this.getAnAnnotation().getType().hasQualifiedName("org.kohsuke.stapler", "InjectedParameter") + } +} + +/** The `generateResponse` method of `org.kohsuke.stapler.HttpResponse` or its subtypes. */ +private class GenerateResponseMethod extends Method { + GenerateResponseMethod() { + this.getDeclaringType().getASourceSupertype*() instanceof HttpResponse and + this.hasName("generateResponse") + } +} + +/** Holds if `t` is the static type of `e`, or an upper bound of the runtime type of `e`. */ +private predicate boundOrStaticType(Expr e, RefType t) { + exprTypeFlow(e, t, false) + or + t = e.getType() +} + +/** + * A method called after the construction of a `DataBound` object. + * + * That is, either the `bindResolve` method of a subtype of `org.kohsuke.stapler.DataBoundResolvable`, + * or a method annotated with `javax.annotation.PostConstruct`. + */ +private class PostConstructDataBoundMethod extends Method { + PostConstructDataBoundMethod() { + this.getDeclaringType() + .getASourceSupertype*() + .hasQualifiedName("org.kohsuke.stapler", "DataBoundResolvable") and + this.hasName("bindResolve") + or + this.getAnAnnotation() instanceof PostConstructAnnotation + } +} diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll index fd9f14d4c6f..b3adfa8d80e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll @@ -77,9 +77,6 @@ StrutsXmlFile getRootXmlFile(RefType refType) { ) } -/** DEPRECATED: Alias for getRootXmlFile */ -deprecated StrutsXMLFile getRootXMLFile(RefType refType) { result = getRootXmlFile(refType) } - /** * Gets the suffix used for automatically identifying actions when using the convention plugin. * diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll index 3009056cce3..273034978d1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll @@ -5,9 +5,6 @@ import java */ predicate isStrutsXmlIncluded() { exists(StrutsXmlFile strutsXml) } -/** DEPRECATED: Alias for isStrutsXmlIncluded */ -deprecated predicate isStrutsXMLIncluded = isStrutsXmlIncluded/0; - /** * A struts 2 configuration file. */ @@ -51,9 +48,6 @@ abstract class StrutsXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for StrutsXmlFile */ -deprecated class StrutsXMLFile = StrutsXmlFile; - /** * A Struts 2 "root" configuration XML file directly read by struts. * @@ -66,9 +60,6 @@ class StrutsRootXmlFile extends StrutsXmlFile { } } -/** DEPRECATED: Alias for StrutsRootXmlFile */ -deprecated class StrutsRootXMLFile = StrutsRootXmlFile; - /** * A Struts 2 configuration XML file included, directly or indirectly, by a root Struts configuration. */ @@ -76,9 +67,6 @@ class StrutsIncludedXmlFile extends StrutsXmlFile { StrutsIncludedXmlFile() { exists(StrutsXmlInclude include | this = include.getIncludedFile()) } } -/** DEPRECATED: Alias for StrutsIncludedXmlFile */ -deprecated class StrutsIncludedXMLFile = StrutsIncludedXmlFile; - /** * A Folder which has one or more Struts 2 root configurations. */ @@ -116,9 +104,6 @@ class StrutsXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for StrutsXmlElement */ -deprecated class StrutsXMLElement = StrutsXmlElement; - /** * A `` element within a `struts.xml` file. * @@ -141,9 +126,6 @@ class StrutsXmlInclude extends StrutsXmlElement { } } -/** DEPRECATED: Alias for StrutsXmlInclude */ -deprecated class StrutsXMLInclude = StrutsXmlInclude; - /** * Escape a string for use as the matcher in a string.match(..) call. */ @@ -192,9 +174,6 @@ class StrutsXmlAction extends StrutsXmlElement { } } -/** DEPRECATED: Alias for StrutsXmlAction */ -deprecated class StrutsXMLAction = StrutsXmlAction; - /** * A `` property, representing a configuration parameter to struts. */ @@ -205,6 +184,3 @@ class StrutsXmlConstant extends StrutsXmlElement { string getConstantValue() { result = this.getAttribute("value").getValue() } } - -/** DEPRECATED: Alias for StrutsXmlConstant */ -deprecated class StrutsXMLConstant = StrutsXmlConstant; diff --git a/java/ql/lib/semmle/code/java/security/Encryption.qll b/java/ql/lib/semmle/code/java/security/Encryption.qll index c0c35103331..88a1996ffd9 100644 --- a/java/ql/lib/semmle/code/java/security/Encryption.qll +++ b/java/ql/lib/semmle/code/java/security/Encryption.qll @@ -25,9 +25,6 @@ class HttpsUrlConnection extends RefType { HttpsUrlConnection() { this.hasQualifiedName("javax.net.ssl", "HttpsURLConnection") } } -/** DEPRECATED: Alias for HttpsUrlConnection */ -deprecated class HttpsURLConnection = HttpsUrlConnection; - class SslSocketFactory extends RefType { SslSocketFactory() { this.hasQualifiedName("javax.net.ssl", "SSLSocketFactory") } } diff --git a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll index 89b24006475..beef024eb15 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll @@ -12,9 +12,6 @@ import semmle.code.java.dataflow.TaintTracking */ abstract class SafeExternalApiMethod extends Method { } -/** DEPRECATED: Alias for SafeExternalApiMethod */ -deprecated class SafeExternalAPIMethod = SafeExternalApiMethod; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiMethod extends SafeExternalApiMethod { DefaultSafeExternalApiMethod() { @@ -95,9 +92,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getMethodDescription() { result = this.getMethod().getQualifiedName() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** * DEPRECATED: Use `UntrustedDataToExternalApiFlow` instead. * @@ -125,9 +119,6 @@ module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { */ module UntrustedDataToExternalApiFlow = TaintTracking::Global; -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A node representing untrusted data being passed to an external API. */ class UntrustedExternalApiDataNode extends ExternalApiDataNode { UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flowTo(this) } @@ -136,9 +127,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -172,6 +160,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/java/ql/lib/semmle/code/java/security/LogInjection.qll b/java/ql/lib/semmle/code/java/security/LogInjection.qll index 2314d807a60..7fb85f6d8f1 100644 --- a/java/ql/lib/semmle/code/java/security/LogInjection.qll +++ b/java/ql/lib/semmle/code/java/security/LogInjection.qll @@ -46,16 +46,33 @@ private class LineBreaksLogInjectionSanitizer extends LogInjectionSanitizer { } } +private predicate stringMethodAccess( + MethodAccess ma, CompileTimeConstantExpr arg0, CompileTimeConstantExpr arg1 +) { + ma.getMethod().getDeclaringType() instanceof TypeString and + arg0 = ma.getArgument(0) and + arg1 = ma.getArgument(1) +} + +private predicate stringMethodArgument(CompileTimeConstantExpr arg) { + stringMethodAccess(_, arg, _) or stringMethodAccess(_, _, arg) +} + +bindingset[match] +pragma[inline_late] +private predicate stringMethodArgumentValueMatches(CompileTimeConstantExpr const, string match) { + stringMethodArgument(const) and + const.getStringValue().matches(match) +} + /** * Holds if the return value of `ma` is sanitized against log injection attacks * by removing line breaks from it. */ private predicate logInjectionSanitizer(MethodAccess ma) { exists(CompileTimeConstantExpr target, CompileTimeConstantExpr replacement | - ma.getMethod().getDeclaringType() instanceof TypeString and - target = ma.getArgument(0) and - replacement = ma.getArgument(1) and - not replacement.getStringValue().matches(["%\n%", "%\r%"]) + stringMethodAccess(ma, target, replacement) and + not stringMethodArgumentValueMatches(replacement, ["%\n%", "%\r%"]) | ma.getMethod().hasName("replace") and not replacement.getIntValue() = [10, 13] and @@ -68,7 +85,7 @@ private predicate logInjectionSanitizer(MethodAccess ma) { ( // Replace anything not in an allow list target.getStringValue().matches("[^%]") and - not target.getStringValue().matches("%" + ["\n", "\r", "\\n", "\\r", "\\R"] + "%") + not stringMethodArgumentValueMatches(target, "%" + ["\n", "\r", "\\n", "\\r", "\\R"] + "%") or // Replace line breaks target.getStringValue() = ["\n", "\r", "\\n", "\\r", "\\R"] diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 984c9f6fcaa..eb40a045c1f 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -5,7 +5,6 @@ private import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.SensitiveActions import semmle.code.java.frameworks.android.Compose -import DataFlow /** A variable that may hold sensitive information, judging by its name. */ class CredentialExpr extends Expr { @@ -45,7 +44,7 @@ deprecated class SensitiveLoggerConfiguration extends TaintTracking::Configurati sanitizer.getType() instanceof TypeType } - override predicate isSanitizerIn(Node node) { this.isSource(node) } + override predicate isSanitizerIn(DataFlow::Node node) { this.isSource(node) } } /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ @@ -62,7 +61,7 @@ module SensitiveLoggerConfig implements DataFlow::ConfigSig { sanitizer.getType() instanceof TypeType } - predicate isBarrierIn(Node node) { isSource(node) } + predicate isBarrierIn(DataFlow::Node node) { isSource(node) } } module SensitiveLoggerFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll index 4fa64846c91..a90a23c2165 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll @@ -5,7 +5,6 @@ import semmle.code.java.frameworks.Networking import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.ExternalFlow -import semmle.code.java.security.PathCreation import semmle.code.java.security.PathSanitizer /** @@ -55,11 +54,7 @@ private class TaintPreservingUriCtorParam extends Parameter { module TaintedPathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() - or - sinkNode(sink, "path-injection") - } + predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer.getType() instanceof BoxedType or @@ -82,11 +77,7 @@ module TaintedPathFlow = TaintTracking::Global; module TaintedPathLocalConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() - or - sinkNode(sink, "path-injection") - } + predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer.getType() instanceof BoxedType or diff --git a/java/ql/lib/semmle/code/java/security/XSS.qll b/java/ql/lib/semmle/code/java/security/XSS.qll index bd968bd5fc3..163696e4489 100644 --- a/java/ql/lib/semmle/code/java/security/XSS.qll +++ b/java/ql/lib/semmle/code/java/security/XSS.qll @@ -6,6 +6,7 @@ import semmle.code.java.frameworks.android.WebView import semmle.code.java.frameworks.spring.SpringController import semmle.code.java.frameworks.spring.SpringHttp import semmle.code.java.frameworks.javaee.jsf.JSFRenderer +private import semmle.code.java.frameworks.hudson.Hudson import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.dataflow.ExternalFlow diff --git a/java/ql/lib/semmle/code/java/security/XmlParsers.qll b/java/ql/lib/semmle/code/java/security/XmlParsers.qll index a079267b131..ded513ec656 100644 --- a/java/ql/lib/semmle/code/java/security/XmlParsers.qll +++ b/java/ql/lib/semmle/code/java/security/XmlParsers.qll @@ -337,9 +337,6 @@ class SaxBuilder extends RefType { } } -/** DEPRECATED: Alias for SaxBuilder */ -deprecated class SAXBuilder = SaxBuilder; - /** * A call to `SAXBuilder.build.` */ @@ -359,9 +356,6 @@ class SaxBuilderParse extends XmlParserCall { } } -/** DEPRECATED: Alias for SaxBuilderParse */ -deprecated class SAXBuilderParse = SaxBuilderParse; - private module SafeSaxBuilderToSaxBuilderParseFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof SafeSaxBuilder } @@ -386,9 +380,6 @@ class SaxBuilderConfig extends ParserConfig { } } -/** DEPRECATED: Alias for SaxBuilderConfig */ -deprecated class SAXBuilderConfig = SaxBuilderConfig; - /** A safely configured `SaxBuilder`. */ class SafeSaxBuilder extends VarAccess { SafeSaxBuilder() { @@ -404,9 +395,6 @@ class SafeSaxBuilder extends VarAccess { } } -/** DEPRECATED: Alias for SafeSaxBuilder */ -deprecated class SafeSAXBuilder = SafeSaxBuilder; - /* * The case in * https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#jaxb-unmarshaller @@ -420,17 +408,11 @@ class SaxParser extends RefType { SaxParser() { this.hasQualifiedName("javax.xml.parsers", "SAXParser") } } -/** DEPRECATED: Alias for SaxParser */ -deprecated class SAXParser = SaxParser; - /** The class `javax.xml.parsers.SAXParserFactory`. */ class SaxParserFactory extends RefType { SaxParserFactory() { this.hasQualifiedName("javax.xml.parsers", "SAXParserFactory") } } -/** DEPRECATED: Alias for SaxParserFactory */ -deprecated class SAXParserFactory = SaxParserFactory; - /** A call to `SAXParser.parse`. */ class SaxParserParse extends XmlParserCall { SaxParserParse() { @@ -446,9 +428,6 @@ class SaxParserParse extends XmlParserCall { override predicate isSafe() { SafeSaxParserFlow::flowToExpr(this.getQualifier()) } } -/** DEPRECATED: Alias for SaxParserParse */ -deprecated class SAXParserParse = SaxParserParse; - /** A `ParserConfig` that is specific to `SaxParserFactory`. */ class SaxParserFactoryConfig extends ParserConfig { SaxParserFactoryConfig() { @@ -460,9 +439,6 @@ class SaxParserFactoryConfig extends ParserConfig { } } -/** DEPRECATED: Alias for SaxParserFactoryConfig */ -deprecated class SAXParserFactoryConfig = SaxParserFactoryConfig; - /** * A safely configured `SAXParserFactory`. */ @@ -496,9 +472,6 @@ class SafeSaxParserFactory extends VarAccess { } } -/** DEPRECATED: Alias for SafeSaxParserFactory */ -deprecated class SafeSAXParserFactory = SafeSaxParserFactory; - private module SafeSaxParserFactoryToNewSaxParserFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof SafeSaxParserFactory } @@ -540,9 +513,6 @@ class SafeSaxParser extends MethodAccess { } } -/** DEPRECATED: Alias for SafeSaxParser */ -deprecated class SafeSAXParser = SafeSaxParser; - /* SAXReader: https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#saxreader */ /** * The class `org.dom4j.io.SAXReader`. @@ -551,9 +521,6 @@ class SaxReader extends RefType { SaxReader() { this.hasQualifiedName("org.dom4j.io", "SAXReader") } } -/** DEPRECATED: Alias for SaxReader */ -deprecated class SAXReader = SaxReader; - /** A call to `SAXReader.read`. */ class SaxReaderRead extends XmlParserCall { SaxReaderRead() { @@ -569,9 +536,6 @@ class SaxReaderRead extends XmlParserCall { override predicate isSafe() { SafeSaxReaderFlow::flowToExpr(this.getQualifier()) } } -/** DEPRECATED: Alias for SaxReaderRead */ -deprecated class SAXReaderRead = SaxReaderRead; - /** A `ParserConfig` specific to `SaxReader`. */ class SaxReaderConfig extends ParserConfig { SaxReaderConfig() { @@ -583,9 +547,6 @@ class SaxReaderConfig extends ParserConfig { } } -/** DEPRECATED: Alias for SaxReaderConfig */ -deprecated class SAXReaderConfig = SaxReaderConfig; - private module SafeSaxReaderFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof SafeSaxReader } @@ -626,9 +587,6 @@ class SafeSaxReader extends VarAccess { } } -/** DEPRECATED: Alias for SafeSaxReader */ -deprecated class SafeSAXReader = SafeSaxReader; - /* https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#xmlreader */ /** The class `org.xml.sax.XMLReader`. */ class XmlReader extends RefType { @@ -640,9 +598,6 @@ class InputSource extends Class { InputSource() { this.hasQualifiedName("org.xml.sax", "InputSource") } } -/** DEPRECATED: Alias for XmlReader */ -deprecated class XMLReader = XmlReader; - /** A call to `XMLReader.read`. */ class XmlReaderParse extends XmlParserCall { XmlReaderParse() { @@ -661,9 +616,6 @@ class XmlReaderParse extends XmlParserCall { } } -/** DEPRECATED: Alias for XmlReaderParse */ -deprecated class XMLReaderParse = XmlReaderParse; - /** A `ParserConfig` specific to the `XmlReader`. */ class XmlReaderConfig extends ParserConfig { XmlReaderConfig() { @@ -675,9 +627,6 @@ class XmlReaderConfig extends ParserConfig { } } -/** DEPRECATED: Alias for XmlReaderConfig */ -deprecated class XMLReaderConfig = XmlReaderConfig; - private module ExplicitlySafeXmlReaderFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ExplicitlySafeXmlReader } @@ -697,9 +646,6 @@ class SafeXmlReaderFlowSink extends Expr { } } -/** DEPRECATED: Alias for SafeXmlReaderFlowSink */ -deprecated class SafeXMLReaderFlowSink = SafeXmlReaderFlowSink; - /** An `XmlReader` that is explicitly configured to be safe. */ class ExplicitlySafeXmlReader extends VarAccess { ExplicitlySafeXmlReader() { @@ -739,9 +685,6 @@ class ExplicitlySafeXmlReader extends VarAccess { } } -/** DEPRECATED: Alias for ExplicitlySafeXmlReader */ -deprecated class ExplicitlySafeXMLReader = ExplicitlySafeXmlReader; - private module CreatedSafeXmlReaderFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof CreatedSafeXmlReader } @@ -778,9 +721,6 @@ class CreatedSafeXmlReader extends Call { } } -/** DEPRECATED: Alias for CreatedSafeXmlReader */ -deprecated class CreatedSafeXMLReader = CreatedSafeXmlReader; - /* * SAXSource in * https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#jaxb-unmarshaller @@ -791,9 +731,6 @@ class SaxSource extends RefType { SaxSource() { this.hasQualifiedName("javax.xml.transform.sax", "SAXSource") } } -/** DEPRECATED: Alias for SaxSource */ -deprecated class SAXSource = SaxSource; - /** A call to the constructor of `SAXSource` with `XmlReader` and `InputSource`. */ class ConstructedSaxSource extends ClassInstanceExpr { ConstructedSaxSource() { @@ -814,9 +751,6 @@ class ConstructedSaxSource extends ClassInstanceExpr { } } -/** DEPRECATED: Alias for ConstructedSaxSource */ -deprecated class ConstructedSAXSource = ConstructedSaxSource; - /** A call to the `SAXSource.setXMLReader` method. */ class SaxSourceSetReader extends MethodAccess { SaxSourceSetReader() { @@ -828,9 +762,6 @@ class SaxSourceSetReader extends MethodAccess { } } -/** DEPRECATED: Alias for SaxSourceSetReader */ -deprecated class SAXSourceSetReader = SaxSourceSetReader; - /** A `SaxSource` that is safe to use. */ class SafeSaxSource extends Expr { SafeSaxSource() { @@ -847,9 +778,6 @@ class SafeSaxSource extends Expr { } } -/** DEPRECATED: Alias for SafeSaxSource */ -deprecated class SafeSAXSource = SafeSaxSource; - /* Transformer: https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#transformerfactory */ /** An access to a method use for configuring a transformer or schema. */ abstract class TransformerConfig extends MethodAccess { @@ -1063,9 +991,6 @@ class SaxTransformerFactoryNewXmlFilter extends XmlParserCall { override predicate isSafe() { SafeTransformerFactoryFlow::flowToExpr(this.getQualifier()) } } -/** DEPRECATED: Alias for SaxTransformerFactoryNewXmlFilter */ -deprecated class SAXTransformerFactoryNewXMLFilter = SaxTransformerFactoryNewXmlFilter; - /* Schema: https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#schemafactory */ /** The class `javax.xml.validation.SchemaFactory`. */ class SchemaFactory extends RefType { @@ -1197,9 +1122,6 @@ class SimpleXmlPersisterCall extends XmlParserCall { override predicate isSafe() { none() } } -/** DEPRECATED: Alias for SimpleXmlPersisterCall */ -deprecated class SimpleXMLPersisterCall = SimpleXmlPersisterCall; - /** A call to `provide` in `Provider`. */ class SimpleXmlProviderCall extends XmlParserCall { SimpleXmlProviderCall() { @@ -1218,9 +1140,6 @@ class SimpleXmlProviderCall extends XmlParserCall { override predicate isSafe() { none() } } -/** DEPRECATED: Alias for SimpleXmlProviderCall */ -deprecated class SimpleXMLProviderCall = SimpleXmlProviderCall; - /** A call to `read` in `NodeBuilder`. */ class SimpleXmlNodeBuilderCall extends XmlParserCall { SimpleXmlNodeBuilderCall() { @@ -1236,9 +1155,6 @@ class SimpleXmlNodeBuilderCall extends XmlParserCall { override predicate isSafe() { none() } } -/** DEPRECATED: Alias for SimpleXmlNodeBuilderCall */ -deprecated class SimpleXMLNodeBuilderCall = SimpleXmlNodeBuilderCall; - /** A call to the `format` method of the `Formatter`. */ class SimpleXmlFormatterCall extends XmlParserCall { SimpleXmlFormatterCall() { @@ -1254,9 +1170,6 @@ class SimpleXmlFormatterCall extends XmlParserCall { override predicate isSafe() { none() } } -/** DEPRECATED: Alias for SimpleXmlFormatterCall */ -deprecated class SimpleXMLFormatterCall = SimpleXmlFormatterCall; - /** A configuration for secure processing. */ Expr configSecureProcessing() { result.(ConstantStringExpr).getStringValue() = diff --git a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll index 4fad191a3e4..074153ffd8f 100644 --- a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll @@ -4,6 +4,7 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.PathSanitizer private import semmle.code.java.dataflow.ExternalFlow +private import semmle.code.java.security.PathCreation /** * A method that returns the name of an archive entry. @@ -40,5 +41,28 @@ module ZipSlipFlow = TaintTracking::Global; * A sink that represents a file creation, such as a file write, copy or move operation. */ private class FileCreationSink extends DataFlow::Node { - FileCreationSink() { sinkNode(this, "path-injection") } + FileCreationSink() { + sinkNode(this, "path-injection") and + not isPathCreation(this) + } +} + +/** + * Holds if `sink` is a path creation node that doesn't imply a read/write filesystem operation. + * This is to avoid creating new spurious alerts, since `PathCreation` sinks weren't + * previously part of this query. + */ +private predicate isPathCreation(DataFlow::Node sink) { + exists(PathCreation pc | + pc.getAnInput() = sink.asExpr() + or + pc.getAnInput().(Argument).isVararg() and sink.(DataFlow::ImplicitVarargsArray).getCall() = pc + | + // exclude actual read/write operations included in `PathCreation` + not pc.(Call) + .getCallee() + .getDeclaringType() + .hasQualifiedName("java.io", + ["FileInputStream", "FileOutputStream", "FileReader", "FileWriter"]) + ) } diff --git a/java/ql/lib/semmle/code/xml/WebXML.qll b/java/ql/lib/semmle/code/xml/WebXML.qll index c15793b58a4..c356081c95f 100644 --- a/java/ql/lib/semmle/code/xml/WebXML.qll +++ b/java/ql/lib/semmle/code/xml/WebXML.qll @@ -5,9 +5,6 @@ import java */ predicate isWebXmlIncluded() { exists(WebXmlFile webXml) } -/** DEPRECATED: Alias for isWebXmlIncluded */ -deprecated predicate isWebXMLIncluded = isWebXmlIncluded/0; - /** * A deployment descriptor file, typically called `web.xml`. */ @@ -31,9 +28,6 @@ class WebXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for WebXmlFile */ -deprecated class WebXMLFile = WebXmlFile; - /** * An XML element in a `WebXMLFile`. */ @@ -46,9 +40,6 @@ class WebXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for WebXmlElement */ -deprecated class WebXMLElement = WebXmlElement; - /** * A `` element in a `web.xml` file. */ diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme new file mode 100644 index 00000000000..7cbc85b1f3e --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme @@ -0,0 +1,1255 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme new file mode 100644 index 00000000000..ecfcf050952 --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme @@ -0,0 +1,1256 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties new file mode 100644 index 00000000000..47074bcc8ab --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties @@ -0,0 +1,2 @@ +description: Add ENUM_ENTRIES +compatibility: full diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 1e7cebcfca1..4852323b9b8 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.6.3 + +### Minor Analysis Improvements + +* The `java/summary/lines-of-code` query now only counts lines of Java code. The new `java/summary/lines-of-code-kotlin` counts lines of Kotlin code. + ## 0.6.2 ### Minor Analysis Improvements diff --git a/java/ql/src/Metrics/Summaries/LinesOfCode.ql b/java/ql/src/Metrics/Summaries/LinesOfCode.ql index c1b43c2a3d9..62c19d1b932 100644 --- a/java/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/java/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -1,8 +1,8 @@ /** * @id java/summary/lines-of-code * @name Total lines of Java code in the database - * @description The total number of lines of code across all files. This is a useful metric of the size of a database. - * For all files that were seen during the build, this query counts the lines of code, excluding whitespace + * @description The total number of lines of code across all Java files. This is a useful metric of the size of a database. + * For all Java files that were seen during the build, this query counts the lines of code, excluding whitespace * or comments. * @kind metric * @tags summary @@ -11,4 +11,4 @@ import java -select sum(CompilationUnit f | f.fromSource() | f.getNumberOfLinesOfCode()) +select sum(CompilationUnit f | f.fromSource() and f.isJavaSourceFile() | f.getNumberOfLinesOfCode()) diff --git a/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql b/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql new file mode 100644 index 00000000000..0093bc0a98f --- /dev/null +++ b/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql @@ -0,0 +1,18 @@ +/** + * @id java/summary/lines-of-code-kotlin + * @name Total lines of Kotlin code in the database + * @description The total number of lines of code across all Kotlin files. This is a useful metric of the size of a database. + * For all Kotlin files that were seen during the build, this query counts the lines of code, excluding whitespace + * or comments. + * @kind metric + * @tags summary + * lines-of-code + */ + +import java + +select sum(CompilationUnit f | + f.fromSource() and f.isKotlinSourceFile() + | + f.getNumberOfLinesOfCode() + ) diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql index 2d73514d97b..96e8e66c7cd 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql @@ -14,6 +14,7 @@ */ import java +import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathFlow::PathGraph diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql index c017b8a3aa9..8e56121883f 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql @@ -14,6 +14,7 @@ */ import java +import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathLocalFlow::PathGraph diff --git a/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp b/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp index adea1b89c49..2caf0ccc8b0 100644 --- a/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp +++ b/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp @@ -3,17 +3,15 @@ "qhelp.dtd"> -

Extracting files from a malicious zip archive (or another archive format) -without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in -archive paths.

+

Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated.

Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine an output file to write the contents of the archive item to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

diff --git a/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql b/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql index 3488c97c057..0d165a73521 100644 --- a/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql +++ b/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during archive extraction ("Zip Slip") - * @description Extracting files from a malicious archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id java/zipslip * @problem.severity error diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll b/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll new file mode 100644 index 00000000000..51e786eebdc --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll @@ -0,0 +1,444 @@ +/** + * For internal use only. + */ + +private import java +private import semmle.code.Location as Location +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.dataflow.TaintTracking +private import semmle.code.java.security.PathCreation +private import semmle.code.java.dataflow.ExternalFlow as ExternalFlow +private import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl +private import semmle.code.java.security.ExternalAPIs as ExternalAPIs +private import semmle.code.java.Expr as Expr +private import semmle.code.java.security.QueryInjection +private import semmle.code.java.security.RequestForgery +private import semmle.code.java.dataflow.internal.ModelExclusions as ModelExclusions +private import AutomodelJavaUtil as AutomodelJavaUtil +private import semmle.code.java.security.PathSanitizer as PathSanitizer +private import AutomodelSharedGetCallable as AutomodelSharedGetCallable +import AutomodelSharedCharacteristics as SharedCharacteristics +import AutomodelEndpointTypes as AutomodelEndpointTypes + +newtype JavaRelatedLocationType = CallContext() + +/** + * A class representing nodes that are arguments to calls. + */ +private class ArgumentNode extends DataFlow::Node { + ArgumentNode() { this.asExpr() = [any(Call c).getAnArgument(), any(Call c).getQualifier()] } +} + +/** + * A candidates implementation. + * + * Some important notes: + * - This mode is using arguments as endpoints. + * - We use the `CallContext` (the surrounding call expression) as related location. + */ +module ApplicationCandidatesImpl implements SharedCharacteristics::CandidateSig { + // for documentation of the implementations here, see the QLDoc in the CandidateSig signature module. + class Endpoint = ArgumentNode; + + class EndpointType = AutomodelEndpointTypes::EndpointType; + + class NegativeEndpointType = AutomodelEndpointTypes::NegativeSinkType; + + class RelatedLocation = Location::Top; + + class RelatedLocationType = JavaRelatedLocationType; + + // Sanitizers are currently not modeled in MaD. TODO: check if this has large negative impact. + predicate isSanitizer(Endpoint e, EndpointType t) { + exists(t) and + ( + e.getType() instanceof BoxedType + or + e.getType() instanceof PrimitiveType + or + e.getType() instanceof NumberType + ) + or + t instanceof AutomodelEndpointTypes::PathInjectionSinkType and + e instanceof PathSanitizer::PathInjectionSanitizer + } + + RelatedLocation asLocation(Endpoint e) { result = e.asExpr() } + + predicate isKnownKind = AutomodelJavaUtil::isKnownKind/2; + + predicate isSink(Endpoint e, string kind) { + exists(string package, string type, string name, string signature, string ext, string input | + sinkSpec(e, package, type, name, signature, ext, input) and + ExternalFlow::sinkModel(package, type, _, name, [signature, ""], ext, input, kind, _) + ) + or + isCustomSink(e, kind) + } + + predicate isNeutral(Endpoint e) { + exists(string package, string type, string name, string signature | + sinkSpec(e, package, type, name, signature, _, _) and + ExternalFlow::neutralModel(package, type, name, [signature, ""], "sink", _) + ) + } + + additional predicate sinkSpec( + Endpoint e, string package, string type, string name, string signature, string ext, string input + ) { + ApplicationModeGetCallable::getCallable(e).hasQualifiedName(package, type, name) and + signature = ExternalFlow::paramsString(ApplicationModeGetCallable::getCallable(e)) and + ext = "" and + ( + exists(Call c, int argIdx | + e.asExpr() = c.getArgument(argIdx) and + input = AutomodelJavaUtil::getArgumentForIndex(argIdx) + ) + or + exists(Call c | + e.asExpr() = c.getQualifier() and input = AutomodelJavaUtil::getArgumentForIndex(-1) + ) + ) + } + + /** + * Gets the related location for the given endpoint. + * + * The only related location we model is the the call expression surrounding to + * which the endpoint is either argument or qualifier (known as the call context). + */ + RelatedLocation getRelatedLocation(Endpoint e, RelatedLocationType type) { + type = CallContext() and + result = any(Call c | e.asExpr() = [c.getAnArgument(), c.getQualifier()]) + } +} + +private class JavaCallable = Callable; + +private module ApplicationModeGetCallable implements AutomodelSharedGetCallable::GetCallableSig { + class Callable = JavaCallable; + + class Endpoint = ApplicationCandidatesImpl::Endpoint; + + /** + * Returns the API callable being modeled. + */ + Callable getCallable(Endpoint e) { + exists(Call c | + e.asExpr() = [c.getAnArgument(), c.getQualifier()] and + result = c.getCallee() + ) + } +} + +/** + * Contains endpoints that are defined in QL code rather than as a MaD model. Ideally this predicate + * should be empty. + */ +private predicate isCustomSink(Endpoint e, string kind) { + e.asExpr() instanceof ArgumentToExec and kind = "command injection" + or + e instanceof RequestForgerySink and kind = "request forgery" + or + e instanceof QueryInjectionSink and kind = "sql" +} + +module CharacteristicsImpl = + SharedCharacteristics::SharedCharacteristics; + +class EndpointCharacteristic = CharacteristicsImpl::EndpointCharacteristic; + +class Endpoint = ApplicationCandidatesImpl::Endpoint; + +/* + * Predicates that are used to surface prompt examples and candidates for classification with an ML model. + */ + +/** + * A MetadataExtractor that extracts metadata for application mode. + */ +class ApplicationModeMetadataExtractor extends string { + ApplicationModeMetadataExtractor() { this = "ApplicationModeMetadataExtractor" } + + predicate hasMetadata( + Endpoint e, string package, string type, string subtypes, string name, string signature, + string input + ) { + exists(Call call, Callable callable, int argIdx | + call.getCallee() = callable and + ( + e.asExpr() = call.getArgument(argIdx) + or + e.asExpr() = call.getQualifier() and argIdx = -1 + ) and + input = AutomodelJavaUtil::getArgumentForIndex(argIdx) and + package = callable.getDeclaringType().getPackage().getName() and + // we're using the erased types because the MaD convention is to not specify type parameters. + // Whether something is or isn't a sink doesn't usually depend on the type parameters. + type = callable.getDeclaringType().getErasure().(RefType).nestedName() and + subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and + name = callable.getName() and + signature = ExternalFlow::paramsString(callable) + ) + } +} + +/* + * EndpointCharacteristic classes that are specific to Automodel for Java. + */ + +/** + * A negative characteristic that indicates that an is-style boolean method is unexploitable even if it is a sink. + * + * A sink is highly unlikely to be exploitable if its callable's name starts with `is` and the callable has a boolean return + * type (e.g. `isDirectory`). These kinds of calls normally do only checks, and appear before the proper call that does + * the dangerous/interesting thing, so we want the latter to be modeled as the sink. + * + * TODO: this might filter too much, it's possible that methods with more than one parameter contain interesting sinks + */ +private class UnexploitableIsCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + UnexploitableIsCharacteristic() { this = "unexploitable (is-style boolean method)" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + ApplicationModeGetCallable::getCallable(e).getName().matches("is%") and + ApplicationModeGetCallable::getCallable(e).getReturnType() instanceof BooleanType + } +} + +/** + * A negative characteristic that indicates that an existence-checking boolean method is unexploitable even if it is a + * sink. + * + * A sink is highly unlikely to be exploitable if its callable's name is `exists` or `notExists` and the callable has a + * boolean return type. These kinds of calls normally do only checks, and appear before the proper call that does the + * dangerous/interesting thing, so we want the latter to be modeled as the sink. + */ +private class UnexploitableExistsCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + UnexploitableExistsCharacteristic() { this = "unexploitable (existence-checking boolean method)" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + exists(Callable callable | + callable = ApplicationModeGetCallable::getCallable(e) and + callable.getName().toLowerCase() = ["exists", "notexists"] and + callable.getReturnType() instanceof BooleanType + ) + } +} + +/** + * A negative characteristic that indicates that an endpoint is an argument to an exception, which is not a sink. + */ +private class ExceptionCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + ExceptionCharacteristic() { this = "exception" } + + override predicate appliesToEndpoint(Endpoint e) { + ApplicationModeGetCallable::getCallable(e).getDeclaringType().getASupertype*() instanceof + TypeThrowable + } +} + +/** + * A negative characteristic that indicates that an endpoint is a MaD taint step. MaD modeled taint steps are global, + * so they are not sinks for any query. Non-MaD taint steps might be specific to a particular query, so we don't + * filter those out. + */ +private class IsMaDTaintStepCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + IsMaDTaintStepCharacteristic() { this = "taint step" } + + override predicate appliesToEndpoint(Endpoint e) { + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(e, _, _) or + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(e, _, _) or + FlowSummaryImpl::Private::Steps::summaryGetterStep(e, _, _, _) or + FlowSummaryImpl::Private::Steps::summarySetterStep(e, _, _, _) + } +} + +/** + * A negative characteristic that filters out qualifiers that are classes (i.e. static calls). These + * are unlikely to have any non-trivial flow going into them. + * + * Technically, an accessed type _could_ come from outside of the source code, but there's not + * much likelihood of that being user-controlled. + */ +private class ClassQualifierCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + ClassQualifierCharacteristic() { this = "class qualifier" } + + override predicate appliesToEndpoint(Endpoint e) { + exists(Call c | + e.asExpr() = c.getQualifier() and + c.getQualifier() instanceof TypeAccess + ) + } +} + +/** + * A call to a method that's known locally will not be considered as a candidate to model. + * + * The reason is that we would expect data/taint flow into the method implementation to uncover + * any sinks that are present there. + */ +private class ArgumentToLocalCall extends CharacteristicsImpl::UninterestingToModelCharacteristic { + ArgumentToLocalCall() { this = "argument to local call" } + + override predicate appliesToEndpoint(Endpoint e) { + ApplicationModeGetCallable::getCallable(e).fromSource() + } +} + +/** + * A Characteristic that marks endpoints as uninteresting to model, according to the Java ModelExclusions module. + */ +private class ExcludedFromModeling extends CharacteristicsImpl::UninterestingToModelCharacteristic { + ExcludedFromModeling() { this = "excluded from modeling" } + + override predicate appliesToEndpoint(Endpoint e) { + ModelExclusions::isUninterestingForModels(ApplicationModeGetCallable::getCallable(e)) + } +} + +/** + * A negative characteristic that filters out non-public methods. Non-public methods are not interesting to include in + * the standard Java modeling, because they cannot be called from outside the package. + */ +private class NonPublicMethodCharacteristic extends CharacteristicsImpl::UninterestingToModelCharacteristic +{ + NonPublicMethodCharacteristic() { this = "non-public method" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationModeGetCallable::getCallable(e).isPublic() + } +} + +/** + * A negative characteristic that indicates that an endpoint is a non-sink argument to a method whose sinks have already + * been modeled. + * + * WARNING: These endpoints should not be used as negative samples for training, because some sinks may have been missed + * when the method was modeled. Specifically, as we start using ATM to merge in new declarations, we can be less sure + * that a method with one argument modeled as a MaD sink has also had its remaining arguments manually reviewed. The + * ML model might have predicted argument 0 of some method to be a sink but not argument 1, when in fact argument 1 is + * also a sink. + */ +private class OtherArgumentToModeledMethodCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic +{ + OtherArgumentToModeledMethodCharacteristic() { + this = "other argument to a method that has already been modeled" + } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + exists(DataFlow::Node otherSink | + ApplicationCandidatesImpl::isSink(otherSink, _) and + e.asExpr() = otherSink.asExpr().(Argument).getCall().getAnArgument() and + e != otherSink + ) + } +} + +/** + * A characteristic that marks functional expression as likely not sinks. + * + * These expressions may well _contain_ sinks, but rarely are sinks themselves. + */ +private class FunctionValueCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic { + FunctionValueCharacteristic() { this = "function value" } + + override predicate appliesToEndpoint(Endpoint e) { e.asExpr() instanceof FunctionalExpr } +} + +/** + * A negative characteristic that indicates that an endpoint is not a `to` node for any known taint step. Such a node + * cannot be tainted, because taint can't flow into it. + * + * WARNING: These endpoints should not be used as negative samples for training, because they may include sinks for + * which our taint tracking modeling is incomplete. + */ +private class CannotBeTaintedCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic +{ + CannotBeTaintedCharacteristic() { this = "cannot be tainted" } + + override predicate appliesToEndpoint(Endpoint e) { not this.isKnownOutNodeForStep(e) } + + /** + * Holds if the node `n` is known as the predecessor in a modeled flow step. + */ + private predicate isKnownOutNodeForStep(Endpoint e) { + e.asExpr() instanceof Call or // we just assume flow in that case + TaintTracking::localTaintStep(_, e) or + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(_, e, _) or + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(_, e, _) or + FlowSummaryImpl::Private::Steps::summaryGetterStep(_, _, e, _) or + FlowSummaryImpl::Private::Steps::summarySetterStep(_, _, e, _) + } +} + +/** + * Holds if the given endpoint has a self-contradictory combination of characteristics. Detects errors in our endpoint + * characteristics. Lists the problematic characteristics and their implications for all such endpoints, together with + * an error message indicating why this combination is problematic. + * + * Copied from + * javascript/ql/experimental/adaptivethreatmodeling/test/endpoint_large_scale/ContradictoryEndpointCharacteristics.ql + */ +predicate erroneousEndpoints( + Endpoint endpoint, EndpointCharacteristic characteristic, + AutomodelEndpointTypes::EndpointType endpointType, float confidence, string errorMessage, + boolean ignoreKnownModelingErrors +) { + // An endpoint's characteristics should not include positive indicators with medium/high confidence for more than one + // sink/source type (including the negative type). + exists( + EndpointCharacteristic characteristic2, AutomodelEndpointTypes::EndpointType endpointClass2, + float confidence2 + | + endpointType != endpointClass2 and + ( + endpointType instanceof AutomodelEndpointTypes::SinkType and + endpointClass2 instanceof AutomodelEndpointTypes::SinkType + or + endpointType instanceof AutomodelEndpointTypes::SourceType and + endpointClass2 instanceof AutomodelEndpointTypes::SourceType + ) and + characteristic.appliesToEndpoint(endpoint) and + characteristic2.appliesToEndpoint(endpoint) and + characteristic.hasImplications(endpointType, true, confidence) and + characteristic2.hasImplications(endpointClass2, true, confidence2) and + confidence > SharedCharacteristics::mediumConfidence() and + confidence2 > SharedCharacteristics::mediumConfidence() and + ( + ignoreKnownModelingErrors = true and + not knownOverlappingCharacteristics(characteristic, characteristic2) + or + ignoreKnownModelingErrors = false + ) + ) and + errorMessage = "Endpoint has high-confidence positive indicators for multiple classes" + or + // An endpoint's characteristics should not include positive indicators with medium/high confidence for some class and + // also include negative indicators with medium/high confidence for this same class. + exists(EndpointCharacteristic characteristic2, float confidence2 | + characteristic.appliesToEndpoint(endpoint) and + characteristic2.appliesToEndpoint(endpoint) and + characteristic.hasImplications(endpointType, true, confidence) and + characteristic2.hasImplications(endpointType, false, confidence2) and + confidence > SharedCharacteristics::mediumConfidence() and + confidence2 > SharedCharacteristics::mediumConfidence() + ) and + ignoreKnownModelingErrors = false and + errorMessage = "Endpoint has high-confidence positive and negative indicators for the same class" +} + +/** + * Holds if `characteristic1` and `characteristic2` are among the pairs of currently known positive characteristics that + * have some overlap in their results. This indicates a problem with the underlying Java modeling. Specifically, + * `PathCreation` is prone to FPs. + */ +private predicate knownOverlappingCharacteristics( + EndpointCharacteristic characteristic1, EndpointCharacteristic characteristic2 +) { + characteristic1 != characteristic2 and + characteristic1 = ["mad taint step", "create path", "read file", "known non-sink"] and + characteristic2 = ["mad taint step", "create path", "read file", "known non-sink"] +} diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql new file mode 100644 index 00000000000..1e4c9c7e248 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql @@ -0,0 +1,49 @@ +/** + * Surfaces the endpoints that are not already known to be sinks, and are therefore used as candidates for + * classification with an ML model. + * + * Note: This query does not actually classify the endpoints using the model. + * + * @name Automodel candidates (application mode) + * @description A query to extract automodel candidates in application mode. + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-candidates + * @tags internal extract automodel application-mode candidates + */ + +private import AutomodelApplicationModeCharacteristics +private import AutomodelJavaUtil + +from + Endpoint endpoint, string message, ApplicationModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input +where + not exists(CharacteristicsImpl::UninterestingToModelCharacteristic u | + u.appliesToEndpoint(endpoint) + ) and + // If a node is already a known sink for any of our existing ATM queries and is already modeled as a MaD sink, we + // don't include it as a candidate. Otherwise, we might include it as a candidate for query A, but the model will + // label it as a sink for one of the sink types of query B, for which it's already a known sink. This would result in + // overlap between our detected sinks and the pre-existing modeling. We assume that, if a sink has already been + // modeled in a MaD model, then it doesn't belong to any additional sink types, and we don't need to reexamine it. + not CharacteristicsImpl::isSink(endpoint, _) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // The message is the concatenation of all sink types for which this endpoint is known neither to be a sink nor to be + // a non-sink, and we surface only endpoints that have at least one such sink type. + message = + strictconcat(AutomodelEndpointTypes::SinkType sinkType | + not CharacteristicsImpl::isKnownSink(endpoint, sinkType) and + CharacteristicsImpl::isSinkCandidate(endpoint, sinkType) + | + sinkType, ", " + ) +select endpoint, message + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // method name + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql new file mode 100644 index 00000000000..e8a284dd6c0 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql @@ -0,0 +1,73 @@ +/** + * Surfaces endpoints that are non-sinks with high confidence, for use as negative examples in the prompt. + * + * @name Negative examples (application mode) + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-negative-examples + * @tags internal extract automodel application-mode negative examples + */ + +private import java +private import AutomodelApplicationModeCharacteristics +private import AutomodelEndpointTypes +private import AutomodelJavaUtil + +/** + * Gets a sample of endpoints (of at most `limit` samples) for which the given characteristic applies. + * + * The main purpose of this helper predicate is to avoid selecting too many samples, as this may + * cause the SARIF file to exceed the maximum size limit. + */ +bindingset[limit] +Endpoint getSampleForCharacteristic(EndpointCharacteristic c, int limit) { + exists(int n, int num_endpoints | num_endpoints = count(Endpoint e | c.appliesToEndpoint(e)) | + result = + rank[n](Endpoint e, Location loc | + loc = e.getLocation() and c.appliesToEndpoint(e) + | + e + order by + loc.getFile().getAbsolutePath(), loc.getStartLine(), loc.getStartColumn(), + loc.getEndLine(), loc.getEndColumn() + ) and + // To avoid selecting samples that are too close together (as the ranking above goes by file + // path first), we select `limit` evenly spaced samples from the ranked list of endpoints. By + // default this would always include the first sample, so we add a random-chosen prime offset + // to the first sample index, and reduce modulo the number of endpoints. + // Finally, we add 1 to the result, as ranking results in a 1-indexed relation. + n = 1 + (([0 .. limit - 1] * (num_endpoints / limit).floor() + 46337) % num_endpoints) + ) +} + +from + Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, string message, + ApplicationModeMetadataExtractor meta, DollarAtString package, DollarAtString type, + DollarAtString subtypes, DollarAtString name, DollarAtString signature, DollarAtString input +where + endpoint = getSampleForCharacteristic(characteristic, 100) and + confidence >= SharedCharacteristics::highConfidence() and + characteristic.hasImplications(any(NegativeSinkType negative), true, confidence) and + // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly + // certain about in the prompt. + not erroneousEndpoints(endpoint, _, _, _, _, false) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // It's valid for a node to satisfy the logic for both `isSink` and `isSanitizer`, but in that case it will be + // treated by the actual query as a sanitizer, since the final logic is something like + // `isSink(n) and not isSanitizer(n)`. We don't want to include such nodes as negative examples in the prompt, because + // they're ambiguous and might confuse the model, so we explicitly exclude all known sinks from the negative examples. + not exists(EndpointCharacteristic characteristic2, float confidence2, SinkType positiveType | + not positiveType instanceof NegativeSinkType and + characteristic2.appliesToEndpoint(endpoint) and + confidence2 >= SharedCharacteristics::maximalConfidence() and + characteristic2.hasImplications(positiveType, true, confidence2) + ) and + message = characteristic +select endpoint, message + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql new file mode 100644 index 00000000000..c62476377db --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql @@ -0,0 +1,33 @@ +/** + * Surfaces endpoints that are sinks with high confidence, for use as positive examples in the prompt. + * + * @name Positive examples (application mode) + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-positive-examples + * @tags internal extract automodel application-mode positive examples + */ + +private import AutomodelApplicationModeCharacteristics +private import AutomodelEndpointTypes +private import AutomodelJavaUtil + +from + Endpoint endpoint, SinkType sinkType, ApplicationModeMetadataExtractor meta, + DollarAtString package, DollarAtString type, DollarAtString subtypes, DollarAtString name, + DollarAtString signature, DollarAtString input +where + // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly + // certain about in the prompt. + not erroneousEndpoints(endpoint, _, _, _, _, false) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // Extract positive examples of sinks belonging to the existing ATM query configurations. + CharacteristicsImpl::isKnownSink(endpoint, sinkType) +select endpoint, sinkType + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelEndpointTypes.qll b/java/ql/src/Telemetry/AutomodelEndpointTypes.qll index 7414837b605..618fa4bc7dd 100644 --- a/java/ql/src/Telemetry/AutomodelEndpointTypes.qll +++ b/java/ql/src/Telemetry/AutomodelEndpointTypes.qll @@ -40,18 +40,18 @@ class NegativeSinkType extends SinkType { } /** A sink relevant to the SQL injection query */ -class SqlSinkType extends SinkType { - SqlSinkType() { this = "sql" } +class SqlInjectionSinkType extends SinkType { + SqlInjectionSinkType() { this = "sql-injection" } } /** A sink relevant to the tainted path injection query. */ -class TaintedPathSinkType extends SinkType { - TaintedPathSinkType() { this = "tainted-path" } +class PathInjectionSinkType extends SinkType { + PathInjectionSinkType() { this = "path-injection" } } /** A sink relevant to the SSRF query. */ class RequestForgerySinkType extends SinkType { - RequestForgerySinkType() { this = "ssrf" } + RequestForgerySinkType() { this = "request-forgery" } } /** A sink relevant to the command injection query. */ diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll b/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll index 57bd397f7a8..bc5c3b59a91 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll @@ -14,23 +14,11 @@ private import semmle.code.java.Expr as Expr private import semmle.code.java.security.QueryInjection private import semmle.code.java.security.RequestForgery private import semmle.code.java.dataflow.internal.ModelExclusions as ModelExclusions +private import AutomodelJavaUtil as AutomodelJavaUtil +private import AutomodelSharedGetCallable as AutomodelSharedGetCallable import AutomodelSharedCharacteristics as SharedCharacteristics import AutomodelEndpointTypes as AutomodelEndpointTypes -/** - * A meta data extractor. Any Java extraction mode needs to implement exactly - * one instance of this class. - */ -abstract class MetadataExtractor extends string { - bindingset[this] - MetadataExtractor() { any() } - - abstract predicate hasMetadata( - DataFlow::ParameterNode e, string package, string type, boolean subtypes, string name, - string signature, int input, string parameterName - ); -} - newtype JavaRelatedLocationType = MethodDoc() or ClassDoc() @@ -60,31 +48,7 @@ module FrameworkCandidatesImpl implements SharedCharacteristics::CandidateSig { RelatedLocation asLocation(Endpoint e) { result = e.asParameter() } - predicate isKnownKind(string kind, string humanReadableKind, EndpointType type) { - kind = "read-file" and - humanReadableKind = "read file" and - type instanceof AutomodelEndpointTypes::TaintedPathSinkType - or - kind = "create-file" and - humanReadableKind = "create file" and - type instanceof AutomodelEndpointTypes::TaintedPathSinkType - or - kind = "sql" and - humanReadableKind = "mad modeled sql" and - type instanceof AutomodelEndpointTypes::SqlSinkType - or - kind = "open-url" and - humanReadableKind = "open url" and - type instanceof AutomodelEndpointTypes::RequestForgerySinkType - or - kind = "jdbc-url" and - humanReadableKind = "jdbc url" and - type instanceof AutomodelEndpointTypes::RequestForgerySinkType - or - kind = "command-injection" and - humanReadableKind = "command injection" and - type instanceof AutomodelEndpointTypes::CommandInjectionSinkType - } + predicate isKnownKind = AutomodelJavaUtil::isKnownKind/2; predicate isSink(Endpoint e, string kind) { exists(string package, string type, string name, string signature, string ext, string input | @@ -96,40 +60,48 @@ module FrameworkCandidatesImpl implements SharedCharacteristics::CandidateSig { predicate isNeutral(Endpoint e) { exists(string package, string type, string name, string signature | sinkSpec(e, package, type, name, signature, _, _) and - ExternalFlow::neutralModel(package, type, name, [signature, ""], _, _) + ExternalFlow::neutralModel(package, type, name, [signature, ""], "sink", _) ) } additional predicate sinkSpec( Endpoint e, string package, string type, string name, string signature, string ext, string input ) { - FrameworkCandidatesImpl::getCallable(e).hasQualifiedName(package, type, name) and - signature = ExternalFlow::paramsString(getCallable(e)) and + FrameworkModeGetCallable::getCallable(e).hasQualifiedName(package, type, name) and + signature = ExternalFlow::paramsString(FrameworkModeGetCallable::getCallable(e)) and ext = "" and exists(int paramIdx | e.isParameterOf(_, paramIdx) | - if paramIdx = -1 then input = "Argument[this]" else input = "Argument[" + paramIdx + "]" + input = AutomodelJavaUtil::getArgumentForIndex(paramIdx) ) } /** - * Returns the related location for the given endpoint. + * Gets the related location for the given endpoint. * * Related locations can be JavaDoc comments of the class or the method. */ RelatedLocation getRelatedLocation(Endpoint e, RelatedLocationType type) { type = MethodDoc() and - result = FrameworkCandidatesImpl::getCallable(e).(Documentable).getJavadoc() + result = FrameworkModeGetCallable::getCallable(e).(Documentable).getJavadoc() or type = ClassDoc() and - result = FrameworkCandidatesImpl::getCallable(e).getDeclaringType().(Documentable).getJavadoc() + result = FrameworkModeGetCallable::getCallable(e).getDeclaringType().(Documentable).getJavadoc() } +} + +private class JavaCallable = Callable; + +private module FrameworkModeGetCallable implements AutomodelSharedGetCallable::GetCallableSig { + class Callable = JavaCallable; + + class Endpoint = FrameworkCandidatesImpl::Endpoint; /** * Returns the callable that contains the given endpoint. * * Each Java mode should implement this predicate. */ - additional Callable getCallable(Endpoint e) { result = e.getEnclosingCallable() } + Callable getCallable(Endpoint e) { result = e.getEnclosingCallable() } } module CharacteristicsImpl = SharedCharacteristics::SharedCharacteristics; @@ -145,35 +117,19 @@ class Endpoint = FrameworkCandidatesImpl::Endpoint; /** * A MetadataExtractor that extracts metadata for framework mode. */ -class FrameworkModeMetadataExtractor extends MetadataExtractor { +class FrameworkModeMetadataExtractor extends string { FrameworkModeMetadataExtractor() { this = "FrameworkModeMetadataExtractor" } - /** - * By convention, the subtypes property of the MaD declaration should only be - * true when there _can_ exist any subtypes with a different implementation. - * - * It would technically be ok to always use the value 'true', but this would - * break convention. - */ - boolean considerSubtypes(Callable callable) { - if - callable.isStatic() or - callable.getDeclaringType().isStatic() or - callable.isFinal() or - callable.getDeclaringType().isFinal() - then result = false - else result = true - } - - override predicate hasMetadata( - Endpoint e, string package, string type, boolean subtypes, string name, string signature, - int input, string parameterName + predicate hasMetadata( + Endpoint e, string package, string type, string subtypes, string name, string signature, + string input, string parameterName ) { - exists(Callable callable | - e.asParameter() = callable.getParameter(input) and + exists(Callable callable, int paramIdx | + e.asParameter() = callable.getParameter(paramIdx) and + input = AutomodelJavaUtil::getArgumentForIndex(paramIdx) and package = callable.getDeclaringType().getPackage().getName() and type = callable.getDeclaringType().getErasure().(RefType).nestedName() and - subtypes = this.considerSubtypes(callable) and + subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and name = callable.getName() and parameterName = e.asParameter().getName() and signature = ExternalFlow::paramsString(callable) @@ -199,8 +155,8 @@ private class UnexploitableIsCharacteristic extends CharacteristicsImpl::NotASin override predicate appliesToEndpoint(Endpoint e) { not FrameworkCandidatesImpl::isSink(e, _) and - FrameworkCandidatesImpl::getCallable(e).getName().matches("is%") and - FrameworkCandidatesImpl::getCallable(e).getReturnType() instanceof BooleanType + FrameworkModeGetCallable::getCallable(e).getName().matches("is%") and + FrameworkModeGetCallable::getCallable(e).getReturnType() instanceof BooleanType } } @@ -218,7 +174,7 @@ private class UnexploitableExistsCharacteristic extends CharacteristicsImpl::Not override predicate appliesToEndpoint(Endpoint e) { not FrameworkCandidatesImpl::isSink(e, _) and exists(Callable callable | - callable = FrameworkCandidatesImpl::getCallable(e) and + callable = FrameworkModeGetCallable::getCallable(e) and callable.getName().toLowerCase() = ["exists", "notexists"] and callable.getReturnType() instanceof BooleanType ) @@ -232,7 +188,7 @@ private class ExceptionCharacteristic extends CharacteristicsImpl::NotASinkChara ExceptionCharacteristic() { this = "exception" } override predicate appliesToEndpoint(Endpoint e) { - FrameworkCandidatesImpl::getCallable(e).getDeclaringType().getASupertype*() instanceof + FrameworkModeGetCallable::getCallable(e).getDeclaringType().getASupertype*() instanceof TypeThrowable } } @@ -258,7 +214,7 @@ private class NonPublicMethodCharacteristic extends CharacteristicsImpl::Uninter NonPublicMethodCharacteristic() { this = "non-public method" } override predicate appliesToEndpoint(Endpoint e) { - not FrameworkCandidatesImpl::getCallable(e).isPublic() + not FrameworkModeGetCallable::getCallable(e).isPublic() } } diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql index a64327422a0..4186d1c17b9 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql @@ -4,20 +4,21 @@ * * Note: This query does not actually classify the endpoints using the model. * - * @name Automodel candidates - * @description A query to extract automodel candidates. + * @name Automodel candidates (framework mode) + * @description A query to extract automodel candidates in framework mode. * @kind problem - * @severity info - * @id java/ml/extract-automodel-candidates - * @tags internal automodel extract candidates + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-candidates + * @tags internal extract automodel framework-mode candidates */ private import AutomodelFrameworkModeCharacteristics -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, string message, MetadataExtractor meta, string package, string type, - boolean subtypes, string name, string signature, int input, string parameterName + Endpoint endpoint, string message, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where not exists(CharacteristicsImpl::UninterestingToModelCharacteristic u | u.appliesToEndpoint(endpoint) @@ -42,10 +43,10 @@ select endpoint, message + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql index f1ba8ee4119..10e1870984d 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql @@ -1,21 +1,22 @@ /** * Surfaces endpoints that are non-sinks with high confidence, for use as negative examples in the prompt. * - * @name Negative examples (experimental) + * @name Negative examples (framework mode) * @kind problem - * @severity info - * @id java/ml/non-sink - * @tags internal automodel extract examples negative + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-negative-examples + * @tags internal extract automodel framework-mode negative examples */ private import AutomodelFrameworkModeCharacteristics private import AutomodelEndpointTypes -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, string message, - MetadataExtractor meta, string package, string type, boolean subtypes, string name, - string signature, int input, string parameterName + Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, + DollarAtString message, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where characteristic.appliesToEndpoint(endpoint) and confidence >= SharedCharacteristics::highConfidence() and @@ -39,10 +40,10 @@ select endpoint, message + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql index e216c292538..2547239ee91 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql @@ -1,20 +1,21 @@ /** * Surfaces endpoints that are sinks with high confidence, for use as positive examples in the prompt. * - * @name Positive examples (experimental) + * @name Positive examples (framework mode) * @kind problem - * @severity info - * @id java/ml/known-sink - * @tags internal automodel extract examples positive + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-positive-examples + * @tags internal extract automodel framework-mode positive examples */ private import AutomodelFrameworkModeCharacteristics private import AutomodelEndpointTypes -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, SinkType sinkType, MetadataExtractor meta, string package, string type, - boolean subtypes, string name, string signature, int input, string parameterName + Endpoint endpoint, SinkType sinkType, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly // certain about in the prompt. @@ -26,10 +27,10 @@ select endpoint, sinkType + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelJavaUtil.qll b/java/ql/src/Telemetry/AutomodelJavaUtil.qll new file mode 100644 index 00000000000..03b73da1015 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelJavaUtil.qll @@ -0,0 +1,67 @@ +private import java +private import AutomodelEndpointTypes as AutomodelEndpointTypes + +/** + * A helper class to represent a string value that can be returned by a query using $@ notation. + * + * It extends `string`, but adds a mock `hasLocationInfo` method that returns the string itself as the file name. + * + * Use this, when you want to return a string value from a query using $@ notation - the string value + * will be included in the sarif file. + * + * + * Background information on `hasLocationInfo`: + * https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-location-information + */ +class DollarAtString extends string { + bindingset[this] + DollarAtString() { any() } + + bindingset[this] + predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { + path = this and sl = 1 and sc = 1 and el = 1 and ec = 1 + } +} + +/** + * Holds for all combinations of MaD kinds (`kind`) and their human readable + * descriptions. + */ +predicate isKnownKind(string kind, AutomodelEndpointTypes::EndpointType type) { + kind = "path-injection" and + type instanceof AutomodelEndpointTypes::PathInjectionSinkType + or + kind = "sql-injection" and + type instanceof AutomodelEndpointTypes::SqlInjectionSinkType + or + kind = "request-forgery" and + type instanceof AutomodelEndpointTypes::RequestForgerySinkType + or + kind = "command-injection" and + type instanceof AutomodelEndpointTypes::CommandInjectionSinkType +} + +/** Gets the models-as-data description for the method argument with the index `index`. */ +bindingset[index] +string getArgumentForIndex(int index) { + index = -1 and result = "Argument[this]" + or + index >= 0 and result = "Argument[" + index + "]" +} + +/** + * By convention, the subtypes property of the MaD declaration should only be + * true when there _can_ exist any subtypes with a different implementation. + * + * It would technically be ok to always use the value 'true', but this would + * break convention. + */ +boolean considerSubtypes(Callable callable) { + if + callable.isStatic() or + callable.getDeclaringType().isStatic() or + callable.isFinal() or + callable.getDeclaringType().isFinal() + then result = false + else result = true +} diff --git a/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll b/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll index f23340bf34f..b077f77deb9 100644 --- a/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll +++ b/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll @@ -50,7 +50,7 @@ signature module CandidateSig { /** * Defines what MaD kinds are known, and what endpoint type they correspond to. */ - predicate isKnownKind(string kind, string humanReadableLabel, EndpointType type); + predicate isKnownKind(string kind, EndpointType type); /** * Holds if `e` is a flow sanitizer, and has type `t`. @@ -276,7 +276,11 @@ module SharedCharacteristics { string madKind; Candidate::EndpointType endpointType; - KnownSinkCharacteristic() { Candidate::isKnownKind(madKind, this, endpointType) } + KnownSinkCharacteristic() { + Candidate::isKnownKind(madKind, endpointType) and + // bind "this" to a unique string differing from that of the SinkType classes + this = madKind + "-characteristic" + } override predicate appliesToEndpoint(Candidate::Endpoint e) { Candidate::isSink(e, madKind) } diff --git a/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll b/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll new file mode 100644 index 00000000000..87e20969381 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll @@ -0,0 +1,21 @@ +/** + * An automodel extraction mode instantiates this interface to define how to access + * the callable that's associated with an endpoint. + */ +signature module GetCallableSig { + /** + * A callable is the definition of a method, function, etc. - something that can be called. + */ + class Callable; + + /** + * An endpoint is a potential candidate for modeling. This will typically be bound to the language's + * DataFlow node class, or a subtype thereof. + */ + class Endpoint; + + /** + * Gets the callable that's associated with the given endpoint. + */ + Callable getCallable(Endpoint endpoint); +} diff --git a/java/ql/src/Telemetry/AutomodelSharedUtil.qll b/java/ql/src/Telemetry/AutomodelSharedUtil.qll deleted file mode 100644 index e03e46abd1d..00000000000 --- a/java/ql/src/Telemetry/AutomodelSharedUtil.qll +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A helper class to represent a string value that can be returned by a query using $@ notation. - * - * It extends `string`, but adds a mock `hasLocationInfo` method that returns the string itself as the file name. - * - * Use this, when you want to return a string value from a query using $@ notation - the string value - * will be included in the sarif file. - * - * - * Background information on `hasLocationInfo`: - * https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-location-information - */ -class DollarAtString extends string { - bindingset[this] - DollarAtString() { any() } - - bindingset[this] - predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { - path = this and sl = 1 and sc = 1 and el = 1 and ec = 1 - } -} diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql index 9f24744fa0c..2889de0b5cf 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql @@ -128,4 +128,4 @@ where not exists(Property p | p.getBackingField() = f) select c, c.getName() + " exposes the internal representation stored in field " + f.getName() + - ". The value may be modified $@.", why.getLocation(), whyText + ". The value may be modified $@.", why, whyText diff --git a/java/ql/src/change-notes/2023-06-16-zipslip-rename.md b/java/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..fa1343317ba --- /dev/null +++ b/java/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during archive extraction ("Zip Slip")" (`java/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/java/ql/src/change-notes/released/0.6.3.md b/java/ql/src/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..96665727131 --- /dev/null +++ b/java/ql/src/change-notes/released/0.6.3.md @@ -0,0 +1,5 @@ +## 0.6.3 + +### Minor Analysis Improvements + +* The `java/summary/lines-of-code` query now only counts lines of Java code. The new `java/summary/lines-of-code-kotlin` counts lines of Kotlin code. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql index 8e113837bca..ba3411e4da2 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql @@ -16,7 +16,6 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.PathCreation import JFinalController import semmle.code.java.security.PathSanitizer import InjectFilePathFlow::PathGraph @@ -52,7 +51,7 @@ module InjectFilePathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() and + sinkNode(sink, "path-injection") and not sink instanceof NormalizedPathNode } diff --git a/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll b/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll index 85d3f36dfdf..377c7f74bd4 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll @@ -56,9 +56,6 @@ predicate myBatisMapperXmlElementFromMethod(Method method, MyBatisMapperXmlEleme ) } -/** DEPRECATED: Alias for myBatisMapperXmlElementFromMethod */ -deprecated predicate myBatisMapperXMLElementFromMethod = myBatisMapperXmlElementFromMethod/2; - /** Holds if the specified `method` has Ibatis Sql operation annotation `isoa`. */ predicate myBatisSqlOperationAnnotationFromMethod(Method method, IbatisSqlOperationAnnotation isoa) { exists(MyBatisSqlOperationAnnotationMethod msoam | diff --git a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll index bd177b30213..05055bdfa84 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll @@ -55,10 +55,14 @@ class WebResourceResponseSink extends DataFlow::Node { } /** - * A value step from the URL argument of `WebView::loadUrl` to the URL parameter of + * A taint step from the URL argument of `WebView::loadUrl` to the URL/WebResourceRequest parameter of * `WebViewClient::shouldInterceptRequest`. + * + * TODO: This ought to be a value step when it is targeting the URL parameter, + * and it ought to check the parameter type in both cases to ensure that we only + * hit the overloads we intend to. */ -private class FetchUrlStep extends AdditionalValueStep { +private class FetchUrlStep extends AdditionalTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists( // webview.loadUrl(url) -> webview.setWebViewClient(new WebViewClient() { shouldInterceptRequest(view, url) }); diff --git a/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll b/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll index 874d8448640..8d829612d95 100644 --- a/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll +++ b/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll @@ -10,9 +10,6 @@ class StrutsXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for StrutsXmlFile */ -deprecated class StrutsXMLFile = StrutsXmlFile; - /** * An XML element in a `StrutsXMLFile`. */ @@ -25,9 +22,6 @@ class StrutsXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for StrutsXmlElement */ -deprecated class StrutsXMLElement = StrutsXmlElement; - /** * A `` element in a `StrutsXMLFile`. */ diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 2da31e822ff..b75aea1c0a0 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.6.3-dev +version: 0.6.4-dev groups: - java - queries diff --git a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll b/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll index c7de1b8b945..529a627e96f 100644 --- a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll +++ b/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll @@ -14,9 +14,6 @@ class MyBatisMapperXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for MyBatisMapperXmlFile */ -deprecated class MyBatisMapperXMLFile = MyBatisMapperXmlFile; - /** * An XML element in a `MyBatisMapperXMLFile`. */ @@ -36,9 +33,6 @@ class MyBatisMapperXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for MyBatisMapperXmlElement */ -deprecated class MyBatisMapperXMLElement = MyBatisMapperXmlElement; - /** * An MyBatis Mapper sql operation element. */ diff --git a/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag b/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag +++ b/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/TestUtilities/InlineFlowTest.qll b/java/ql/test/TestUtilities/InlineFlowTest.qll index 5e37770a279..34d7f75ee20 100644 --- a/java/ql/test/TestUtilities/InlineFlowTest.qll +++ b/java/ql/test/TestUtilities/InlineFlowTest.qll @@ -5,6 +5,12 @@ * ```ql * import java * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph + * + * from PathNode source, PathNode sink + * where flowPath(source, sink) + * select sink, source, sink, "$@", source, source.toString() * ``` * * To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. @@ -18,22 +24,18 @@ * * public void test() { * Object s = source(); - * sink(s); //$hasValueFlow + * sink(s); // $ hasValueFlow * String t = "foo" + taint(); - * sink(t); //$hasTaintFlow + * sink(t); // $ hasTaintFlow * } * * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -43,57 +45,75 @@ import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.TaintTracking import TestUtilities.InlineExpectationsTest -private predicate defaultSource(DataFlow::Node src) { - src.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"] +private predicate defaultSource(DataFlow::Node source) { + source.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"] +} + +private predicate defaultSink(DataFlow::Node sink) { + exists(MethodAccess ma | ma.getMethod().hasName("sink") | sink.asExpr() = ma.getAnArgument()) } module DefaultFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { defaultSource(n) } + predicate isSource(DataFlow::Node source) { defaultSource(source) } - predicate isSink(DataFlow::Node n) { - exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) - } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } int fieldFlowBranchLimit() { result = 1000 } } -private module DefaultValueFlow = DataFlow::Global; +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } -private module DefaultTaintFlow = TaintTracking::Global; + predicate isSink(DataFlow::Node sink) { none() } +} private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and src.asExpr().(MethodAccess).getAnArgument().(StringLiteral).getValue() = result } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module FlowTest { + module ValueFlow = DataFlow::Global; - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + module TaintFlow = TaintTracking::Global; - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | this.hasValueFlow(src, sink) | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - this.hasTaintFlow(src, sink) and not this.hasValueFlow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | ValueFlow::flow(src, sink) | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + } } - predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - DefaultValueFlow::flow(src, sink) - } + import MakeTest + import DataFlow::MergePathGraph - predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - DefaultTaintFlow::flow(src, sink) + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) } } + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest +} diff --git a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected index f3d88d25805..93b2b060685 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected @@ -2075,28 +2075,28 @@ edges | Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | Log4jJndiInjectionTest.java:1085:25:1085:46 | (...)... | | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | Log4jJndiInjectionTest.java:1088:38:1088:54 | (...)... | | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | -| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | -| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | +| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | -| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | -| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | +| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | +| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | -| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | -| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | +| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | -| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | -| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | +| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | -| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | -| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | +| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | -| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | -| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | +| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | -| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | +| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | nodes | Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -4168,33 +4168,33 @@ nodes | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | semmle.label | map | -| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | semmle.label | with(...) : MapMessage | +| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | semmle.label | with(...) : StringMapMessage | | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | -| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | semmle.label | map : Map [] : String | +| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | +| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | semmle.label | map : HashMap [] : String | | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | semmle.label | mmsg | | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | semmle.label | map | diff --git a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected index 5720de5c4b9..cd2b49f28c1 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected @@ -2,7 +2,12 @@ edges | FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | | FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | | FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | +| FilePathInjection.java:177:50:177:58 | file : File | FilePathInjection.java:182:30:182:33 | file | | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | +| FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath : String | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:217:19:217:22 | file : File | +| FilePathInjection.java:209:24:209:31 | filePath : String | FilePathInjection.java:209:15:209:32 | new File(...) : File | +| FilePathInjection.java:217:19:217:22 | file : File | FilePathInjection.java:177:50:177:58 | file : File | nodes | FilePathInjection.java:21:21:21:34 | getPara(...) : String | semmle.label | getPara(...) : String | | FilePathInjection.java:26:47:26:59 | finalFilePath | semmle.label | finalFilePath | @@ -10,11 +15,17 @@ nodes | FilePathInjection.java:72:47:72:59 | finalFilePath | semmle.label | finalFilePath | | FilePathInjection.java:87:21:87:34 | getPara(...) : String | semmle.label | getPara(...) : String | | FilePathInjection.java:95:47:95:59 | finalFilePath | semmle.label | finalFilePath | +| FilePathInjection.java:177:50:177:58 | file : File | semmle.label | file : File | +| FilePathInjection.java:182:30:182:33 | file | semmle.label | file | | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | semmle.label | new File(...) : File | | FilePathInjection.java:209:24:209:31 | filePath | semmle.label | filePath | +| FilePathInjection.java:209:24:209:31 | filePath : String | semmle.label | filePath : String | +| FilePathInjection.java:217:19:217:22 | file : File | semmle.label | file : File | subpaths #select | FilePathInjection.java:26:47:26:59 | finalFilePath | FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:21:21:21:34 | getPara(...) | user-provided value | | FilePathInjection.java:72:47:72:59 | finalFilePath | FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:64:21:64:34 | getPara(...) | user-provided value | | FilePathInjection.java:95:47:95:59 | finalFilePath | FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:87:21:87:34 | getPara(...) | user-provided value | +| FilePathInjection.java:182:30:182:33 | file | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:182:30:182:33 | file | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | | FilePathInjection.java:209:24:209:31 | filePath | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected index 37741e5f605..07ce59763ad 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected @@ -1,152 +1,152 @@ edges -| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | InsecureWebResourceResponse.java:59:34:59:43 | url : Object | -| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | InsecureWebResourceResponse.java:80:34:80:43 | url : Object | -| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | InsecureWebResourceResponse.java:106:34:106:43 | url : Object | -| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | InsecureWebResourceResponse.java:131:36:131:45 | url : Object | -| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | InsecureWebResourceResponse.java:156:35:156:44 | url : Object | -| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | InsecureWebResourceResponse.java:181:34:181:43 | url : Object | -| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | InsecureWebResourceResponse.java:188:34:188:43 | url : Object | -| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | InsecureWebResourceResponse.java:217:35:217:44 | url : Object | -| InsecureWebResourceResponse.java:59:34:59:43 | url : Object | InsecureWebResourceResponse.java:75:20:75:22 | url : Object | -| InsecureWebResourceResponse.java:63:77:63:86 | url : Object | InsecureWebResourceResponse.java:65:41:65:43 | url : Object | +| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | +| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | InsecureWebResourceResponse.java:59:34:59:43 | url : String | +| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | InsecureWebResourceResponse.java:80:34:80:43 | url : String | +| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | InsecureWebResourceResponse.java:106:34:106:43 | url : String | +| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | InsecureWebResourceResponse.java:131:36:131:45 | url : String | +| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | InsecureWebResourceResponse.java:156:35:156:44 | url : String | +| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | InsecureWebResourceResponse.java:181:34:181:43 | url : String | +| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | InsecureWebResourceResponse.java:188:34:188:43 | url : String | +| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | InsecureWebResourceResponse.java:217:35:217:44 | url : String | +| InsecureWebResourceResponse.java:59:34:59:43 | url : String | InsecureWebResourceResponse.java:75:20:75:22 | url : String | +| InsecureWebResourceResponse.java:63:77:63:86 | url : String | InsecureWebResourceResponse.java:65:41:65:43 | url : String | | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | -| InsecureWebResourceResponse.java:65:41:65:43 | url : Object | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:65:41:65:43 | url : String | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:80:34:80:43 | url : Object | InsecureWebResourceResponse.java:101:20:101:22 | url : Object | -| InsecureWebResourceResponse.java:84:77:84:86 | url : Object | InsecureWebResourceResponse.java:86:41:86:43 | url : Object | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:80:34:80:43 | url : String | InsecureWebResourceResponse.java:101:20:101:22 | url : String | +| InsecureWebResourceResponse.java:84:77:84:86 | url : String | InsecureWebResourceResponse.java:86:41:86:43 | url : String | | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | -| InsecureWebResourceResponse.java:86:41:86:43 | url : Object | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:86:41:86:43 | url : String | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:106:34:106:43 | url : Object | InsecureWebResourceResponse.java:127:20:127:22 | url : Object | -| InsecureWebResourceResponse.java:110:77:110:86 | url : Object | InsecureWebResourceResponse.java:112:41:112:43 | url : Object | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:106:34:106:43 | url : String | InsecureWebResourceResponse.java:127:20:127:22 | url : String | +| InsecureWebResourceResponse.java:110:77:110:86 | url : String | InsecureWebResourceResponse.java:112:41:112:43 | url : String | | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | -| InsecureWebResourceResponse.java:112:41:112:43 | url : Object | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:112:41:112:43 | url : String | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | InsecureWebResourceResponse.java:115:75:115:78 | path : String | | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | | InsecureWebResourceResponse.java:115:75:115:78 | path : String | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:131:36:131:45 | url : Object | InsecureWebResourceResponse.java:152:20:152:22 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:156:35:156:44 | url : Object | InsecureWebResourceResponse.java:177:20:177:22 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:181:34:181:43 | url : Object | InsecureWebResourceResponse.java:184:20:184:22 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:188:34:188:43 | url : Object | InsecureWebResourceResponse.java:209:20:209:22 | url : Object | -| InsecureWebResourceResponse.java:192:77:192:102 | request : Object | InsecureWebResourceResponse.java:194:31:194:37 | request : Object | -| InsecureWebResourceResponse.java:194:31:194:37 | request : Object | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:131:36:131:45 | url : String | InsecureWebResourceResponse.java:152:20:152:22 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:156:35:156:44 | url : String | InsecureWebResourceResponse.java:177:20:177:22 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:181:34:181:43 | url : String | InsecureWebResourceResponse.java:184:20:184:22 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:188:34:188:43 | url : String | InsecureWebResourceResponse.java:209:20:209:22 | url : String | +| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:217:35:217:44 | url : Object | InsecureWebResourceResponse.java:226:20:226:22 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:232:69:232:78 | url : Object | InsecureWebResourceResponse.java:234:33:234:35 | url : Object | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:217:35:217:44 | url : String | InsecureWebResourceResponse.java:226:20:226:22 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:232:69:232:78 | url : String | InsecureWebResourceResponse.java:234:33:234:35 | url : String | | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | -| InsecureWebResourceResponse.java:234:33:234:35 | url : Object | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | +| InsecureWebResourceResponse.java:234:33:234:35 | url : String | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | -| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | -| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | -| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | InsecureWebViewActivity.java:42:28:42:37 | url : Object | -| InsecureWebViewActivity.java:42:28:42:37 | url : Object | InsecureWebViewActivity.java:43:25:43:27 | url : Object | -| InsecureWebViewActivity.java:43:25:43:27 | url : Object | InsecureWebViewActivity.java:53:77:53:86 | url : Object | -| InsecureWebViewActivity.java:53:77:53:86 | url : Object | InsecureWebViewActivity.java:55:41:55:43 | url : Object | +| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | +| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | +| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | InsecureWebViewActivity.java:42:28:42:37 | url : String | +| InsecureWebViewActivity.java:42:28:42:37 | url : String | InsecureWebViewActivity.java:43:25:43:27 | url : String | +| InsecureWebViewActivity.java:43:25:43:27 | url : String | InsecureWebViewActivity.java:53:77:53:86 | url : String | +| InsecureWebViewActivity.java:53:77:53:86 | url : String | InsecureWebViewActivity.java:55:41:55:43 | url : String | | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | -| InsecureWebViewActivity.java:55:41:55:43 | url : Object | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | +| InsecureWebViewActivity.java:55:41:55:43 | url : String | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | InsecureWebViewActivity.java:58:71:58:81 | inputStream | | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | nodes | InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | -| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:59:34:59:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:63:77:63:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | +| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:59:34:59:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:63:77:63:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:65:41:65:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:65:41:65:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:80:34:80:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:84:77:84:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:80:34:80:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:84:77:84:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:86:41:86:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:86:41:86:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | semmle.label | new File(...) : File | | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | semmle.label | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | semmle.label | cacheFile : File | | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:106:34:106:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:110:77:110:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:106:34:106:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:110:77:110:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:112:41:112:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:112:41:112:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | semmle.label | substring(...) : String | @@ -154,16 +154,16 @@ nodes | InsecureWebResourceResponse.java:115:75:115:78 | path : String | semmle.label | path : String | | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | semmle.label | substring(...) : String | | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:131:36:131:45 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:156:35:156:44 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:181:34:181:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:188:34:188:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:192:77:192:102 | request : Object | semmle.label | request : Object | -| InsecureWebResourceResponse.java:194:31:194:37 | request : Object | semmle.label | request : Object | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:131:36:131:45 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:156:35:156:44 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:181:34:181:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:188:34:188:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | semmle.label | request : WebResourceRequest | +| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | semmle.label | request : WebResourceRequest | | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | semmle.label | getUrl(...) : Uri | | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | semmle.label | new File(...) : File | | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | semmle.label | uri : Uri | @@ -171,24 +171,24 @@ nodes | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | semmle.label | cacheFile : File | | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:217:35:217:44 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:232:69:232:78 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:217:35:217:44 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:232:69:232:78 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:234:33:234:35 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:234:33:234:35 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | semmle.label | inputStream | | InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | -| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebViewActivity.java:42:28:42:37 | url : Object | semmle.label | url : Object | -| InsecureWebViewActivity.java:43:25:43:27 | url : Object | semmle.label | url : Object | -| InsecureWebViewActivity.java:53:77:53:86 | url : Object | semmle.label | url : Object | +| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | +| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebViewActivity.java:42:28:42:37 | url : String | semmle.label | url : String | +| InsecureWebViewActivity.java:43:25:43:27 | url : String | semmle.label | url : String | +| InsecureWebViewActivity.java:53:77:53:86 | url : String | semmle.label | url : String | | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebViewActivity.java:55:41:55:43 | url : Object | semmle.label | url : Object | +| InsecureWebViewActivity.java:55:41:55:43 | url : String | semmle.label | url : String | | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | semmle.label | uri : Uri | | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | semmle.label | getPath(...) : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected index 43a64e4226a..9c5b6ce8b69 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected @@ -1,47 +1,47 @@ edges | FileService.java:20:31:20:43 | intent : Intent | FileService.java:21:28:21:33 | intent : Intent | -| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : Object | -| FileService.java:21:28:21:64 | getStringExtra(...) : Object | FileService.java:25:42:25:50 | localPath : Object | +| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : String | +| FileService.java:21:28:21:64 | getStringExtra(...) : String | FileService.java:25:42:25:50 | localPath : String | | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | FileService.java:40:41:40:55 | params : Object[] | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:32:13:32:28 | sourceUri : Object | -| FileService.java:32:13:32:28 | sourceUri : Object | FileService.java:35:17:35:25 | sourceUri : Object | -| FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | -| FileService.java:35:17:35:25 | sourceUri : Object | FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | -| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : Object | -| FileService.java:44:33:44:52 | (...)... : Object | FileService.java:45:53:45:59 | ...[...] | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | +| FileService.java:32:13:32:28 | sourceUri : String | FileService.java:35:17:35:25 | sourceUri : String | +| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | +| FileService.java:35:17:35:25 | sourceUri : String | FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | +| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : String[] | +| FileService.java:44:33:44:52 | (...)... : String[] | FileService.java:45:53:45:59 | ...[...] | | LeakFileActivity2.java:15:13:15:18 | intent : Intent | LeakFileActivity2.java:16:26:16:31 | intent : Intent | | LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:20:31:20:43 | intent : Intent | | LeakFileActivity.java:14:35:14:38 | data : Intent | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | -| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Object | -| LeakFileActivity.java:19:31:19:53 | getData(...) : Object | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | -| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | LeakFileActivity.java:21:58:21:82 | getPath(...) | +| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | +| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | +| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | LeakFileActivity.java:21:58:21:82 | getPath(...) | nodes | FileService.java:20:31:20:43 | intent : Intent | semmle.label | intent : Intent | | FileService.java:21:28:21:33 | intent : Intent | semmle.label | intent : Intent | -| FileService.java:21:28:21:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| FileService.java:21:28:21:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | semmle.label | makeParamsToExecute(...) : Object[] | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | semmle.label | makeParamsToExecute(...) : Object[] [[]] : Object | -| FileService.java:25:42:25:50 | localPath : Object | semmle.label | localPath : Object | -| FileService.java:32:13:32:28 | sourceUri : Object | semmle.label | sourceUri : Object | -| FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | semmle.label | new Object[] : Object[] [[]] : Object | -| FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | semmle.label | {...} : Object[] [[]] : Object | -| FileService.java:35:17:35:25 | sourceUri : Object | semmle.label | sourceUri : Object | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | semmle.label | makeParamsToExecute(...) : Object[] [[]] : String | +| FileService.java:25:42:25:50 | localPath : String | semmle.label | localPath : String | +| FileService.java:32:13:32:28 | sourceUri : String | semmle.label | sourceUri : String | +| FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | semmle.label | new Object[] : Object[] [[]] : String | +| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | semmle.label | {...} : Object[] [[]] : String | +| FileService.java:35:17:35:25 | sourceUri : String | semmle.label | sourceUri : String | | FileService.java:40:41:40:55 | params : Object[] | semmle.label | params : Object[] | -| FileService.java:44:33:44:52 | (...)... : Object | semmle.label | (...)... : Object | +| FileService.java:44:33:44:52 | (...)... : String[] | semmle.label | (...)... : String[] | | FileService.java:45:53:45:59 | ...[...] | semmle.label | ...[...] | | LeakFileActivity2.java:15:13:15:18 | intent : Intent | semmle.label | intent : Intent | | LeakFileActivity2.java:16:26:16:31 | intent : Intent | semmle.label | intent : Intent | | LeakFileActivity.java:14:35:14:38 | data : Intent | semmle.label | data : Intent | | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | semmle.label | contentIntent : Intent | | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | semmle.label | contentIntent : Intent | -| LeakFileActivity.java:19:31:19:53 | getData(...) : Object | semmle.label | getData(...) : Object | -| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | semmle.label | streamsToUpload : Object | +| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | semmle.label | getData(...) : Uri | +| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | semmle.label | streamsToUpload : Uri | | LeakFileActivity.java:21:58:21:82 | getPath(...) | semmle.label | getPath(...) | subpaths -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:32:13:32:28 | sourceUri : Object | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | #select | FileService.java:45:53:45:59 | ...[...] | LeakFileActivity2.java:15:13:15:18 | intent : Intent | FileService.java:45:53:45:59 | ...[...] | Leaking arbitrary Android file from $@. | LeakFileActivity2.java:15:13:15:18 | intent | this user input | | FileService.java:45:53:45:59 | ...[...] | LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:45:53:45:59 | ...[...] | Leaking arbitrary Android file from $@. | LeakFileActivity2.java:16:26:16:31 | intent | this user input | diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected index b6f894c3e5f..606cf994976 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected @@ -6,17 +6,17 @@ edges | UnsafeReflection.java:34:33:34:70 | getParameter(...) : String | UnsafeReflection.java:39:58:39:71 | parameterValue | | UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | | UnsafeReflection.java:46:132:46:168 | body : Map | UnsafeReflection.java:49:37:49:40 | body : Map | -| UnsafeReflection.java:49:23:49:59 | (...)... : Object | UnsafeReflection.java:53:67:53:73 | rawData : Object | +| UnsafeReflection.java:49:23:49:59 | (...)... : List | UnsafeReflection.java:53:67:53:73 | rawData : List | | UnsafeReflection.java:49:37:49:40 | body : Map | UnsafeReflection.java:49:37:49:59 | get(...) : Object | -| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : Object | +| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : List | | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | -| UnsafeReflection.java:53:67:53:73 | rawData : Object | UnsafeReflection.java:104:102:104:118 | data : Object | +| UnsafeReflection.java:53:67:53:73 | rawData : List | UnsafeReflection.java:104:102:104:118 | data : List | | UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | UnsafeReflection.java:68:76:68:89 | parameterValue | | UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | UnsafeReflection.java:83:76:83:89 | parameterValue | | UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | UnsafeReflection.java:98:76:98:89 | parameterValue | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:119:21:119:26 | method | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:119:35:119:38 | bean | -| UnsafeReflection.java:104:102:104:118 | data : Object | UnsafeReflection.java:119:41:119:44 | data | +| UnsafeReflection.java:104:102:104:118 | data : List | UnsafeReflection.java:119:41:119:44 | data | nodes | UnsafeReflection.java:21:28:21:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:22:33:22:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -29,11 +29,11 @@ nodes | UnsafeReflection.java:39:58:39:71 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | | UnsafeReflection.java:46:132:46:168 | body : Map | semmle.label | body : Map | -| UnsafeReflection.java:49:23:49:59 | (...)... : Object | semmle.label | (...)... : Object | +| UnsafeReflection.java:49:23:49:59 | (...)... : List | semmle.label | (...)... : List | | UnsafeReflection.java:49:37:49:40 | body : Map | semmle.label | body : Map | | UnsafeReflection.java:49:37:49:59 | get(...) : Object | semmle.label | get(...) : Object | | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | -| UnsafeReflection.java:53:67:53:73 | rawData : Object | semmle.label | rawData : Object | +| UnsafeReflection.java:53:67:53:73 | rawData : List | semmle.label | rawData : List | | UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:68:76:68:89 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -41,7 +41,7 @@ nodes | UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:98:76:98:89 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | -| UnsafeReflection.java:104:102:104:118 | data : Object | semmle.label | data : Object | +| UnsafeReflection.java:104:102:104:118 | data : List | semmle.label | data : List | | UnsafeReflection.java:119:21:119:26 | method | semmle.label | method | | UnsafeReflection.java:119:35:119:38 | bean | semmle.label | bean | | UnsafeReflection.java:119:41:119:44 | data | semmle.label | data | diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected index 11a8bc6c248..57874f96e18 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected @@ -3,13 +3,14 @@ edges | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | +| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | UnsafeResourceGet2.java:37:20:37:22 | url | +| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:37:20:37:22 | url | | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:41:20:41:22 | url | | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:150:20:150:22 | url | @@ -35,15 +36,17 @@ nodes | UnsafeLoadSpringResource.java:35:31:35:33 | clr | semmle.label | clr | | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | semmle.label | fileName : String | | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | semmle.label | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | semmle.label | fileName | | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | | UnsafeRequestPath.java:23:33:23:36 | path | semmle.label | path | | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | | UnsafeResourceGet2.java:17:20:17:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | semmle.label | get(...) : Object | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | semmle.label | get(...) : String | | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | semmle.label | loadUrl | | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | | UnsafeResourceGet2.java:33:20:33:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | semmle.label | get(...) : Object | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | semmle.label | get(...) : String | | UnsafeResourceGet2.java:37:20:37:22 | url | semmle.label | url | | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeResourceGet.java:41:20:41:22 | url | semmle.label | url | @@ -83,6 +86,7 @@ subpaths #select | UnsafeLoadSpringResource.java:35:31:35:33 | clr | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:35:31:35:33 | clr | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:27:32:27:77 | fileName | user-provided value | | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:68:32:68:77 | fileName | user-provided value | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:108:32:108:77 | fileName | user-provided value | | UnsafeRequestPath.java:23:33:23:36 | path | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | Potentially untrusted URL forward due to $@. | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) | user-provided value | | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) | user-provided value | | UnsafeResourceGet2.java:37:20:37:22 | url | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:37:20:37:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected index 0c641999e27..28471144374 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected @@ -1,11 +1,11 @@ edges | SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | SensitiveGetQuery2.java:14:30:14:32 | map : Map | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | SensitiveGetQuery2.java:15:29:15:36 | password | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | SensitiveGetQuery2.java:15:29:15:36 | password : Object | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password : String | | SensitiveGetQuery2.java:14:30:14:32 | map : Map | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | -| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | -| SensitiveGetQuery2.java:15:29:15:36 | password : Object | SensitiveGetQuery2.java:18:40:18:54 | password : Object | -| SensitiveGetQuery2.java:18:40:18:54 | password : Object | SensitiveGetQuery2.java:19:61:19:68 | password | +| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | +| SensitiveGetQuery2.java:15:29:15:36 | password : String | SensitiveGetQuery2.java:18:40:18:54 | password : String | +| SensitiveGetQuery2.java:18:40:18:54 | password : String | SensitiveGetQuery2.java:19:61:19:68 | password | | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | SensitiveGetQuery3.java:13:57:13:64 | password | | SensitiveGetQuery3.java:17:10:17:40 | getParameter(...) : String | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | | SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | SensitiveGetQuery4.java:16:37:16:47 | accessToken | @@ -16,12 +16,12 @@ edges | SensitiveGetQuery.java:17:40:17:54 | password : String | SensitiveGetQuery.java:18:61:18:68 | password | nodes | SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | semmle.label | getParameterMap(...) : Map | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | semmle.label | (...)... : Object | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | semmle.label | (...)... : String | | SensitiveGetQuery2.java:14:30:14:32 | map : Map | semmle.label | map : Map | | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | semmle.label | get(...) : Object | | SensitiveGetQuery2.java:15:29:15:36 | password | semmle.label | password | -| SensitiveGetQuery2.java:15:29:15:36 | password : Object | semmle.label | password : Object | -| SensitiveGetQuery2.java:18:40:18:54 | password : Object | semmle.label | password : Object | +| SensitiveGetQuery2.java:15:29:15:36 | password : String | semmle.label | password : String | +| SensitiveGetQuery2.java:18:40:18:54 | password : String | semmle.label | password : String | | SensitiveGetQuery2.java:19:61:19:68 | password | semmle.label | password | | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | semmle.label | getRequestParameter(...) : String | | SensitiveGetQuery3.java:13:57:13:64 | password | semmle.label | password | diff --git a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected index 73657a38158..5f0e5b028f9 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected @@ -1,25 +1,25 @@ edges -| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | -| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | -| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | -| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | +| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | +| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | +| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | +| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | +| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | +| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | +| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | nodes | NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | semmle.label | parseDouble(...) | | NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | semmle.label | parseInt(...) | | NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | semmle.label | parseInt(...) | | NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | semmle.label | new Double(...) | | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | semmle.label | valueOf(...) | subpaths diff --git a/java/ql/test/ext/TestModels/Test.java b/java/ql/test/ext/TestModels/Test.java index 83efd12e967..6bbc7a07879 100644 --- a/java/ql/test/ext/TestModels/Test.java +++ b/java/ql/test/ext/TestModels/Test.java @@ -82,7 +82,7 @@ public class Test { Connection con = DriverManager.getConnection(""); PreparedStatement ps1 = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID = ?"); ps1.setString(1, (String)source()); - sink(ps1); // $hasValueFlow + sink(ps1); // safe // java.util.concurrent.atomic AtomicReference ar = new AtomicReference(source()); diff --git a/java/ql/test/ext/TestModels/test.expected b/java/ql/test/ext/TestModels/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/ext/TestModels/test.expected +++ b/java/ql/test/ext/TestModels/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/ext/TestModels/test.ql b/java/ql/test/ext/TestModels/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/ext/TestModels/test.ql +++ b/java/ql/test/ext/TestModels/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/kotlin/library-tests/classes/diags.ql b/java/ql/test/kotlin/library-tests/classes/diags.ql deleted file mode 100644 index f791c30d153..00000000000 --- a/java/ql/test/kotlin/library-tests/classes/diags.ql +++ /dev/null @@ -1,8 +0,0 @@ -import semmle.code.java.Diagnostics - -from Diagnostic d -where d.getSeverity() > 2 -select d, d.getGeneratedBy(), d.getSeverity(), d.getTag(), d.getMessage(), - d.getFullMessage() - .regexpReplaceAll("^\\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} K\\] ", - "[DATE TIME K] ") diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected index f566914ba89..f72956fded3 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected @@ -1,3 +1,5 @@ +failures +testFailures | test.kt:28:14:28:21 | getSecond(...) | Unexpected result: hasTaintFlow=a | | test.kt:35:14:35:27 | component1(...) | Unexpected result: hasTaintFlow=d | | test.kt:41:14:41:22 | getSecond(...) | Unexpected result: hasTaintFlow=e | diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt b/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt new file mode 100644 index 00000000000..07beffd2be2 --- /dev/null +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt @@ -0,0 +1,11 @@ +import java.io.Closeable + +class UseFlowTest { + fun taint(t: T) = t + fun sink(s: Closeable) { } + + fun test(input: Closeable) { + taint(input).use { it -> sink(it) } // $ hasValueFlow + sink(taint(input).use { it }) // $ hasValueFlow + } +} diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt b/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt new file mode 100644 index 00000000000..d495f95c854 --- /dev/null +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt @@ -0,0 +1,9 @@ +class WithFlowTest { + fun taint(t: T) = t + fun sink(s: String) { } + + fun test(input: String) { + with(taint(input)) { sink(this) } // $ hasValueFlow + sink(with(taint(input)) { this }) // $ hasValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected b/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected +++ b/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql index 131d0a5706d..a4f8b4e822d 100644 --- a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql +++ b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql @@ -12,12 +12,10 @@ module Config implements DataFlow::ConfigSig { module Flow = DataFlow::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "flow" } - override string getARelevantTag() { result = "flow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(DataFlow::Node src, DataFlow::Node sink | Flow::flow(src, sink) | sink.getLocation() = location and @@ -26,3 +24,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/callctx/test.expected b/java/ql/test/library-tests/dataflow/callctx/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/callctx/test.expected +++ b/java/ql/test/library-tests/dataflow/callctx/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/callctx/test.ql b/java/ql/test/library-tests/dataflow/callctx/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/callctx/test.ql +++ b/java/ql/test/library-tests/dataflow/callctx/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/collections/containerflow.expected b/java/ql/test/library-tests/dataflow/collections/containerflow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/collections/containerflow.expected +++ b/java/ql/test/library-tests/dataflow/collections/containerflow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/collections/containerflow.ql b/java/ql/test/library-tests/dataflow/collections/containerflow.ql index 992971d6dc7..4b1a19535ea 100644 --- a/java/ql/test/library-tests/dataflow/collections/containerflow.ql +++ b/java/ql/test/library-tests/dataflow/collections/containerflow.ql @@ -1,3 +1,4 @@ import java import semmle.code.java.dataflow.DataFlow import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected +++ b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql index 5a0ca1865c1..29d355671ec 100644 --- a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql +++ b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql @@ -18,12 +18,10 @@ module TaintFlowConfig implements DataFlow::ConfigSig { module TaintFlow = TaintTracking::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "hasTaintFlow" } - override string getARelevantTag() { result = ["hasTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTaintFlow" and exists(DataFlow::Node sink | TaintFlow::flowTo(sink) | sink.getLocation() = location and @@ -32,3 +30,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected b/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected +++ b/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql b/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql index 4a9794ab351..944abac0642 100644 --- a/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql +++ b/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql @@ -2,6 +2,7 @@ import java import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.FlowSteps import TestUtilities.InlineFlowTest +import DefaultFlowTest class Model extends FluentMethod { Model() { this.getName() = "modelledFluentMethod" } diff --git a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql index cd51fbc746a..51abe1a6c5a 100644 --- a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql +++ b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql @@ -12,15 +12,20 @@ predicate taintFlowUpdate(DataFlow::ParameterNode p1, DataFlow::ParameterNode p2 exists(DataFlow::PostUpdateNode ret | localTaint(p1, ret) | ret.getPreUpdateNode() = p2) } +predicate summaryStep(FlowSummaryNode src, FlowSummaryNode sink) { + FlowSummaryImpl::Private::Steps::summaryLocalStep(src.getSummaryNode(), sink.getSummaryNode(), + false) or + FlowSummaryImpl::Private::Steps::summaryReadStep(src.getSummaryNode(), _, sink.getSummaryNode()) or + FlowSummaryImpl::Private::Steps::summaryStoreStep(src.getSummaryNode(), _, sink.getSummaryNode()) +} + from DataFlow::Node src, DataFlow::Node sink where ( localAdditionalTaintStep(src, sink) or FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(src, sink, _) ) and - not FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false) and - not FlowSummaryImpl::Private::Steps::summaryReadStep(src, _, sink) and - not FlowSummaryImpl::Private::Steps::summaryStoreStep(src, _, sink) + not summaryStep(src, sink) or exists(ArgumentNode arg, MethodAccess call, DataFlow::ParameterNode p, int i | src = arg and diff --git a/java/ql/test/library-tests/dataflow/state/test.expected b/java/ql/test/library-tests/dataflow/state/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/state/test.expected +++ b/java/ql/test/library-tests/dataflow/state/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/state/test.ql b/java/ql/test/library-tests/dataflow/state/test.ql index b82dd95c0b1..b6063962ef2 100644 --- a/java/ql/test/library-tests/dataflow/state/test.ql +++ b/java/ql/test/library-tests/dataflow/state/test.ql @@ -59,12 +59,10 @@ module Flow = TaintTracking::GlobalWithState; module PartialFlow = Flow::FlowExploration; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = ["pFwd", "pRev", "flow"] } - override string getARelevantTag() { result = ["pFwd", "pRev", "flow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(Flow::PathNode src, Flow::PathNode sink | Flow::flowPath(src, sink) and @@ -92,3 +90,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/stream-collect/test.expected b/java/ql/test/library-tests/dataflow/stream-collect/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/stream-collect/test.expected +++ b/java/ql/test/library-tests/dataflow/stream-collect/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/stream-collect/test.ql b/java/ql/test/library-tests/dataflow/stream-collect/test.ql index c4b63c87071..50e3f8d2f7d 100644 --- a/java/ql/test/library-tests/dataflow/stream-collect/test.ql +++ b/java/ql/test/library-tests/dataflow/stream-collect/test.ql @@ -1 +1,2 @@ import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/synth-global/test.expected b/java/ql/test/library-tests/dataflow/synth-global/test.expected index 81332464f79..ae4c33edb3d 100644 --- a/java/ql/test/library-tests/dataflow/synth-global/test.expected +++ b/java/ql/test/library-tests/dataflow/synth-global/test.expected @@ -1,2 +1,3 @@ failures +testFailures invalidModelRow diff --git a/java/ql/test/library-tests/dataflow/synth-global/test.ql b/java/ql/test/library-tests/dataflow/synth-global/test.ql index 0d9f2265afc..53f8aa6a6f6 100644 --- a/java/ql/test/library-tests/dataflow/synth-global/test.ql +++ b/java/ql/test/library-tests/dataflow/synth-global/test.ql @@ -1,3 +1,4 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest import ModelValidation diff --git a/java/ql/test/library-tests/dataflow/taint-format/test.expected b/java/ql/test/library-tests/dataflow/taint-format/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taint-format/test.expected +++ b/java/ql/test/library-tests/dataflow/taint-format/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-format/test.ql b/java/ql/test/library-tests/dataflow/taint-format/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/taint-format/test.ql +++ b/java/ql/test/library-tests/dataflow/taint-format/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected +++ b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql +++ b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected +++ b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql +++ b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/Hudson.java b/java/ql/test/library-tests/dataflow/taintsources/Hudson.java new file mode 100644 index 00000000000..2a180eeb5fb --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/Hudson.java @@ -0,0 +1,16 @@ +import hudson.FilePath; + +public class Hudson { + + private static void sink(Object o) {} + + public static void test() throws Exception { + FilePath fp = null; + sink(FilePath.newInputStreamDenyingSymlinkAsNeeded(null, null, null)); // $hasLocalValueFlow + sink(FilePath.openInputStream(null, null)); // $hasLocalValueFlow + sink(fp.read()); // $hasLocalValueFlow + sink(fp.read(null)); // $hasLocalValueFlow + sink(fp.readFromOffset(-1)); // $hasLocalValueFlow + sink(fp.readToString()); // $hasLocalValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taintsources/Stapler.java b/java/ql/test/library-tests/dataflow/taintsources/Stapler.java new file mode 100644 index 00000000000..96be00270ba --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/Stapler.java @@ -0,0 +1,14 @@ +import org.kohsuke.stapler.InjectedParameter; + +public class Stapler { + + @InjectedParameter + private @interface MyInjectedParameter { + } + + private static void sink(Object o) {} + + public static void test(@MyInjectedParameter String src) { + sink(src); // $ hasRemoteValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taintsources/local.expected b/java/ql/test/library-tests/dataflow/taintsources/local.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/local.expected +++ b/java/ql/test/library-tests/dataflow/taintsources/local.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/local.ql b/java/ql/test/library-tests/dataflow/taintsources/local.ql index a174629ca6e..45697947173 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/local.ql +++ b/java/ql/test/library-tests/dataflow/taintsources/local.ql @@ -26,12 +26,10 @@ module LocalTaintConfig implements DataFlow::ConfigSig { module LocalTaintFlow = TaintTracking::Global; -class LocalFlowTest extends InlineExpectationsTest { - LocalFlowTest() { this = "LocalFlowTest" } +module LocalFlowTest implements TestSig { + string getARelevantTag() { result = ["hasLocalValueFlow", "hasLocalTaintFlow"] } - override string getARelevantTag() { result = ["hasLocalValueFlow", "hasLocalTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasLocalValueFlow" and exists(DataFlow::Node sink | LocalValueFlow::flowTo(sink) | sink.getLocation() = location and @@ -49,3 +47,5 @@ class LocalFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c19a2aa5fb3..c8249b05e38 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/remote.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/remote.expected +++ b/java/ql/test/library-tests/dataflow/taintsources/remote.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/remote.ql index fa1f206ca74..7f58a68d438 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/remote.ql +++ b/java/ql/test/library-tests/dataflow/taintsources/remote.ql @@ -22,12 +22,10 @@ module RemoteTaintConfig implements DataFlow::ConfigSig { module RemoteTaintFlow = TaintTracking::Global; -class RemoteFlowTest extends InlineExpectationsTest { - RemoteFlowTest() { this = "RemoteFlowTest" } +module RemoteFlowTest implements TestSig { + string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - override string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasRemoteValueFlow" and exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | sink.getLocation() = location and @@ -45,3 +43,5 @@ class RemoteFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dispatch/CallableViaSummary.java b/java/ql/test/library-tests/dispatch/CallableViaSummary.java new file mode 100644 index 00000000000..da7c7d86efd --- /dev/null +++ b/java/ql/test/library-tests/dispatch/CallableViaSummary.java @@ -0,0 +1,31 @@ +import java.util.*; + +public class CallableViaSummary { + public interface Element { + public void handle(String message); + } + + public void main(String[] args) { + List elements = new ArrayList<>(); + + List elements2 = new ArrayList<>(); + + elements.add(new Element() { + @Override + public void handle(String message) { + System.out.println(message); + } + }); + + elements.add(message -> System.out.println(message)); + + // This dispatches to the two added elements because + // the summary of ArrayList causes flow via type tracking. + elements.get(0).handle("Hello, world!"); + + // This does not dispatch to anything, showing that the + // open-world assumption does not apply + // (and hence that type tracking is necessary above). + elements2.get(0).handle("Hello, world!"); + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dispatch/viaSummary.expected b/java/ql/test/library-tests/dispatch/viaSummary.expected new file mode 100644 index 00000000000..7c311587d9a --- /dev/null +++ b/java/ql/test/library-tests/dispatch/viaSummary.expected @@ -0,0 +1,2 @@ +| CallableViaSummary.java:24:9:24:47 | handle(...) | CallableViaSummary.java:15:25:15:30 | handle | +| CallableViaSummary.java:24:9:24:47 | handle(...) | CallableViaSummary.java:20:22:20:59 | handle | diff --git a/java/ql/test/library-tests/dispatch/viaSummary.ql b/java/ql/test/library-tests/dispatch/viaSummary.ql new file mode 100644 index 00000000000..a7a88d0749d --- /dev/null +++ b/java/ql/test/library-tests/dispatch/viaSummary.ql @@ -0,0 +1,9 @@ +import java +import semmle.code.java.dispatch.VirtualDispatch + +from MethodAccess ma, Method m +where + m = viableImpl(ma) and + m.fromSource() and + ma.getFile().toString() = "CallableViaSummary" +select ma, m diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql index 70c0cef4917..a1d25dc275e 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql @@ -3,10 +3,8 @@ import semmle.code.java.frameworks.JaxWS import semmle.code.java.security.XSS import TestUtilities.InlineExpectationsTest -class JaxRsTest extends InlineExpectationsTest { - JaxRsTest() { this = "JaxRsTest" } - - override string getARelevantTag() { +module JaxRsTest implements TestSig { + string getARelevantTag() { result = [ "ResourceMethod", "RootResourceClass", "NonRootResourceClass", @@ -18,7 +16,7 @@ class JaxRsTest extends InlineExpectationsTest { ] } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "ResourceMethod" and exists(JaxRsResourceMethod resourceMethod | resourceMethod.getLocation() = location and @@ -168,3 +166,5 @@ class JaxRsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql index d0ab4274b12..93ab3fe066d 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql @@ -13,16 +13,4 @@ module Config implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module TaintFlow = TaintTracking::Global; - -module ValueFlow = DataFlow::Global; - -class Test extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - TaintFlow::flow(source, sink) - } - - override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) { - ValueFlow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql index 6ebd597bb0a..8ccc69dc8c2 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.frameworks.JaxWS import TestUtilities.InlineExpectationsTest -class JaxWsEndpointTest extends InlineExpectationsTest { - JaxWsEndpointTest() { this = "JaxWsEndpointTest" } +module JaxWsEndpointTest implements TestSig { + string getARelevantTag() { result = ["JaxWsEndpoint", "JaxWsEndpointRemoteMethod"] } - override string getARelevantTag() { result = ["JaxWsEndpoint", "JaxWsEndpointRemoteMethod"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "JaxWsEndpoint" and exists(JaxWsEndpoint jaxWsEndpoint | jaxWsEndpoint.getLocation() = location and @@ -25,3 +23,5 @@ class JaxWsEndpointTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/asynctask/test.expected b/java/ql/test/library-tests/frameworks/android/asynctask/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/asynctask/test.expected +++ b/java/ql/test/library-tests/frameworks/android/asynctask/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/asynctask/test.ql b/java/ql/test/library-tests/frameworks/android/asynctask/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/asynctask/test.ql +++ b/java/ql/test/library-tests/frameworks/android/asynctask/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected +++ b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql +++ b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/content-provider/test.expected b/java/ql/test/library-tests/frameworks/android/content-provider/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider/test.expected +++ b/java/ql/test/library-tests/frameworks/android/content-provider/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/content-provider/test.ql b/java/ql/test/library-tests/frameworks/android/content-provider/test.ql index f068b30b0d5..2c6bd09dc40 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider/test.ql +++ b/java/ql/test/library-tests/frameworks/android/content-provider/test.ql @@ -10,12 +10,4 @@ module ProviderTaintFlowConfig implements DataFlow::ConfigSig { int fieldFlowBranchLimit() { result = DefaultFlowConfig::fieldFlowBranchLimit() } } -module ProviderTaintFlow = TaintTracking::Global; - -class ProviderInlineFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - ProviderTaintFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/external-storage/test.expected b/java/ql/test/library-tests/frameworks/android/external-storage/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/external-storage/test.expected +++ b/java/ql/test/library-tests/frameworks/android/external-storage/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/external-storage/test.ql b/java/ql/test/library-tests/frameworks/android/external-storage/test.ql index c73c0a5c6c9..64ff27077df 100644 --- a/java/ql/test/library-tests/frameworks/android/external-storage/test.ql +++ b/java/ql/test/library-tests/frameworks/android/external-storage/test.ql @@ -11,10 +11,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class ExternalStorageTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected b/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected +++ b/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql b/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql +++ b/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/intent/test.expected b/java/ql/test/library-tests/frameworks/android/intent/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/intent/test.expected +++ b/java/ql/test/library-tests/frameworks/android/intent/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/intent/test.ql b/java/ql/test/library-tests/frameworks/android/intent/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/intent/test.ql +++ b/java/ql/test/library-tests/frameworks/android/intent/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/notification/test.expected b/java/ql/test/library-tests/frameworks/android/notification/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/notification/test.expected +++ b/java/ql/test/library-tests/frameworks/android/notification/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/notification/test.ql b/java/ql/test/library-tests/frameworks/android/notification/test.ql index f0a60550d4d..07c022b1265 100644 --- a/java/ql/test/library-tests/frameworks/android/notification/test.ql +++ b/java/ql/test/library-tests/frameworks/android/notification/test.ql @@ -1,3 +1,4 @@ import java import semmle.code.java.frameworks.android.Intent import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/slice/test.expected b/java/ql/test/library-tests/frameworks/android/slice/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/slice/test.expected +++ b/java/ql/test/library-tests/frameworks/android/slice/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/slice/test.ql b/java/ql/test/library-tests/frameworks/android/slice/test.ql index b3c5fe78094..787f93df5a0 100644 --- a/java/ql/test/library-tests/frameworks/android/slice/test.ql +++ b/java/ql/test/library-tests/frameworks/android/slice/test.ql @@ -11,8 +11,6 @@ module SliceValueFlowConfig implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module SliceValueFlow = DataFlow::Global; - module SliceTaintFlowConfig implements DataFlow::ConfigSig { predicate isSource = DefaultFlowConfig::isSource/1; @@ -24,14 +22,4 @@ module SliceTaintFlowConfig implements DataFlow::ConfigSig { } } -module SliceTaintFlow = TaintTracking::Global; - -class SliceFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) { - SliceValueFlow::flow(source, sink) - } - - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - SliceTaintFlow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected +++ b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql index 64c0f48ffa6..5b163a81935 100644 --- a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql +++ b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql @@ -10,12 +10,4 @@ module SourceValueFlowConfig implements DataFlow::ConfigSig { int fieldFlowBranchLimit() { result = DefaultFlowConfig::fieldFlowBranchLimit() } } -module SourceValueFlow = DataFlow::Global; - -class SourceInlineFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - SourceValueFlow::flow(src, sink) - } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import ValueFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected +++ b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql index 5bbe2cab89c..64cb38486de 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql +++ b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql @@ -14,12 +14,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class FlowStepTest extends InlineExpectationsTest { - FlowStepTest() { this = "FlowStepTest" } +module FlowStepTest implements TestSig { + string getARelevantTag() { result = "taintReachesReturn" } - override string getARelevantTag() { result = "taintReachesReturn" } - - override predicate hasActualResult(Location l, string element, string tag, string value) { + predicate hasActualResult(Location l, string element, string tag, string value) { tag = "taintReachesReturn" and value = "" and exists(DataFlow::Node source | Flow::flow(source, _) | @@ -28,3 +26,5 @@ class FlowStepTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected +++ b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql index 234b7ca74b0..c0661820294 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql +++ b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql @@ -14,12 +14,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class SinkTest extends InlineExpectationsTest { - SinkTest() { this = "SinkTest" } +module SinkTest implements TestSig { + string getARelevantTag() { result = "taintReachesSink" } - override string getARelevantTag() { result = "taintReachesSink" } - - override predicate hasActualResult(Location l, string element, string tag, string value) { + predicate hasActualResult(Location l, string element, string tag, string value) { tag = "taintReachesSink" and value = "" and exists(DataFlow::Node source | Flow::flow(source, _) | @@ -28,3 +26,5 @@ class SinkTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/uri/test.expected b/java/ql/test/library-tests/frameworks/android/uri/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/uri/test.expected +++ b/java/ql/test/library-tests/frameworks/android/uri/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/uri/test.ql b/java/ql/test/library-tests/frameworks/android/uri/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/uri/test.ql +++ b/java/ql/test/library-tests/frameworks/android/uri/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/widget/test.expected b/java/ql/test/library-tests/frameworks/android/widget/test.expected index 8329ef6b41b..5390495c737 100644 --- a/java/ql/test/library-tests/frameworks/android/widget/test.expected +++ b/java/ql/test/library-tests/frameworks/android/widget/test.expected @@ -1,2 +1,3 @@ failures +testFailures valueOf diff --git a/java/ql/test/library-tests/frameworks/android/widget/test.ql b/java/ql/test/library-tests/frameworks/android/widget/test.ql index ddabfd1f27a..3d476b8bd5e 100644 --- a/java/ql/test/library-tests/frameworks/android/widget/test.ql +++ b/java/ql/test/library-tests/frameworks/android/widget/test.ql @@ -1,6 +1,7 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineFlowTest +import DefaultFlowTest query predicate valueOf(MethodAccess ma) { ma.getMethod().hasQualifiedName("java.lang", "String", "valueOf") diff --git a/java/ql/test/library-tests/frameworks/apache-ant/test.expected b/java/ql/test/library-tests/frameworks/apache-ant/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-ant/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-ant/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-ant/test.ql b/java/ql/test/library-tests/frameworks/apache-ant/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-ant/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-ant/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-collections/Test.java b/java/ql/test/library-tests/frameworks/apache-collections/Test.java index 188849457ac..09906405d75 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/Test.java +++ b/java/ql/test/library-tests/frameworks/apache-collections/Test.java @@ -721,14 +721,14 @@ public class Test { { // "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value;manual" Map out = null; - Map in = newTreeMapWithMapValue((String)source()); + Map in = newTreeMapWithMapValue((Map)source()); out = MapUtils.getMap(in, null, null); sink(out); // $ hasValueFlow } { // "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value;manual" Map out = null; - Map in = newTreeMapWithMapValue((String)source()); + Map in = newTreeMapWithMapValue((Map)source()); out = MapUtils.getMap(in, null); sink(out); // $ hasValueFlow } @@ -7257,4 +7257,4 @@ public class Test { } } -} \ No newline at end of file +} diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.expected b/java/ql/test/library-tests/frameworks/apache-collections/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.ql b/java/ql/test/library-tests/frameworks/apache-collections/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-http/flow.expected b/java/ql/test/library-tests/frameworks/apache-http/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-http/flow.expected +++ b/java/ql/test/library-tests/frameworks/apache-http/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-http/flow.ql b/java/ql/test/library-tests/frameworks/apache-http/flow.ql index 20069103a4a..540b4847ff3 100644 --- a/java/ql/test/library-tests/frameworks/apache-http/flow.ql +++ b/java/ql/test/library-tests/frameworks/apache-http/flow.ql @@ -21,10 +21,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/gson/Test.java b/java/ql/test/library-tests/frameworks/gson/Test.java index eb3e1e526f0..b1dc845f091 100644 --- a/java/ql/test/library-tests/frameworks/gson/Test.java +++ b/java/ql/test/library-tests/frameworks/gson/Test.java @@ -25,7 +25,7 @@ public class Test { K getMapKeyDefault(Map.Entry container) { return container.getKey(); } JsonElement getMapValueDefault(JsonObject container) { return container.get(null); } V getMapValueDefault(Map.Entry container) { return container.getValue(); } - JsonArray newWithElementDefault(String element) { JsonArray a = new JsonArray(); a.add(element); return a; } + JsonArray newWithElementDefault(JsonElement element) { JsonArray a = new JsonArray(); a.add(element); return a; } JsonObject newWithMapKeyDefault(String key) { JsonObject o = new JsonObject(); o.add(key, (JsonElement) null); return o; } JsonObject newWithMapValueDefault(JsonElement element) { JsonObject o = new JsonObject(); o.add(null, element); return o; } Object source() { return null; } @@ -232,51 +232,58 @@ public class Test { sink(out); // $ hasTaintFlow } { - // "com.google.gson;JsonArray;true;add;;;Argument[0];Argument[this].Element;value;manual" + // "com.google.gson;JsonArray;true;add;(Boolean);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Boolean in = (Boolean)source(); out.add(in); - sink(getElement(out)); // $ hasValueFlow + sink(getElement(out)); // $ hasTaintFlow } { - // "com.google.gson;JsonArray;true;add;;;Argument[0];Argument[this].Element;value;manual" + // "com.google.gson;JsonArray;true;add;(Character);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Character in = (Character)source(); out.add(in); - sink(getElement(out)); // $ hasValueFlow + sink(getElement(out)); // $ hasTaintFlow } { - // "com.google.gson;JsonArray;true;add;;;Argument[0];Argument[this].Element;value;manual" + // "com.google.gson;JsonArray;true;add;(JsonElement);;Argument[0];Argument[this].Element;value;manual" JsonArray out = null; JsonElement in = (JsonElement)source(); out.add(in); sink(getElement(out)); // $ hasValueFlow } { - // "com.google.gson;JsonArray;true;add;;;Argument[0];Argument[this].Element;value;manual" + // "com.google.gson;JsonArray;true;add;(Number);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Number in = (Number)source(); out.add(in); - sink(getElement(out)); // $ hasValueFlow + sink(getElement(out)); // $ hasTaintFlow } { - // "com.google.gson;JsonArray;true;add;;;Argument[0];Argument[this].Element;value;manual" + // "com.google.gson;JsonArray;true;add;(String);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; String in = (String)source(); out.add(in); + sink(getElement(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;addAll;(JsonArray);;Argument[0].Element;Argument[this].Element;value;manual" + JsonArray out = null; + JsonArray in = newWithElementDefault((JsonElement) source()); + out.addAll(in); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;asList;;;Argument[this].Element;ReturnValue.Element;value;manual" List out = null; - JsonArray in = (JsonArray)newWithElementDefault((String) source()); + JsonArray in = newWithElementDefault((JsonElement) source()); out = in.asList(); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;get;;;Argument[this].Element;ReturnValue;value;manual" JsonElement out = null; - JsonArray in = (JsonArray)newWithElementDefault((String) source()); + JsonArray in = newWithElementDefault((JsonElement) source()); out = in.get(0); sink(out); // $ hasValueFlow } @@ -400,51 +407,51 @@ public class Test { sink(getMapKeyDefault(out)); // $ hasValueFlow } { - // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[1];Argument[this].MapValue;value;manual" + // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[1];Argument[this].MapValue;taint;manual" JsonObject out = null; String in = (String)source(); out.addProperty((String)null, in); - sink(getMapValueDefault(out)); // $ hasValueFlow + sink(getMapValueDefault(out)); // $ hasTaintFlow } { // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapKey;ReturnValue.MapKey;value;manual" Map out = null; - JsonObject in = (JsonObject)newWithMapKeyDefault((String) source()); + JsonObject in = newWithMapKeyDefault((String) source()); out = in.asMap(); sink(getMapKey(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapValue;ReturnValue.MapValue;value;manual" Map out = null; - JsonObject in = (JsonObject)newWithMapValueDefault((JsonElement) source()); + JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.asMap(); sink(getMapValue(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapKey;ReturnValue.Element.MapKey;value;manual" Set> out = null; - JsonObject in = (JsonObject)newWithMapKeyDefault((String) source()); + JsonObject in = newWithMapKeyDefault((String) source()); out = in.entrySet(); sink(getMapKeyDefault(getElement(out))); // $ hasValueFlow } { - // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapKey;ReturnValue.Element.MapValue;value;manual" + // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapValue;ReturnValue.Element.MapValue;value;manual" Set> out = null; - JsonObject in = (JsonObject) newWithMapKeyDefault((String) source()); + JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.entrySet(); sink(getMapValueDefault(getElement(out))); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;get;;;Argument[this].MapValue;ReturnValue;value;manual" JsonElement out = null; - JsonObject in = (JsonObject)newWithMapValueDefault((JsonElement) source()); + JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.get(null); sink(out); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;keySet;;;Argument[this].MapKey;ReturnValue.Element;value;manual" Set out = null; - JsonObject in = (JsonObject)newWithMapKeyDefault((String) source()); + JsonObject in = newWithMapKeyDefault((String) source()); out = in.keySet(); sink(getElement(out)); // $ hasValueFlow } diff --git a/java/ql/test/library-tests/frameworks/gson/test.expected b/java/ql/test/library-tests/frameworks/gson/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/gson/test.expected +++ b/java/ql/test/library-tests/frameworks/gson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/gson/test.ql b/java/ql/test/library-tests/frameworks/gson/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/gson/test.ql +++ b/java/ql/test/library-tests/frameworks/gson/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected +++ b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql +++ b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected +++ b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql +++ b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected +++ b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql index fbfc56486f8..300475bd6af 100644 --- a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql +++ b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql @@ -24,12 +24,10 @@ module ValueFlowConfig implements DataFlow::ConfigSig { module ValueFlow = DataFlow::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = ["numTaintFlow", "numValueFlow"] } - override string getARelevantTag() { result = ["numTaintFlow", "numValueFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "numTaintFlow" and exists(DataFlow::Node src, DataFlow::Node sink, int num | TaintFlow::flow(src, sink) | not ValueFlow::flow(src, sink) and @@ -48,3 +46,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/hudson/test.expected b/java/ql/test/library-tests/frameworks/hudson/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/hudson/test.expected +++ b/java/ql/test/library-tests/frameworks/hudson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/hudson/test.ql b/java/ql/test/library-tests/frameworks/hudson/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/hudson/test.ql +++ b/java/ql/test/library-tests/frameworks/hudson/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jackson/test.expected b/java/ql/test/library-tests/frameworks/jackson/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jackson/test.expected +++ b/java/ql/test/library-tests/frameworks/jackson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jackson/test.ql b/java/ql/test/library-tests/frameworks/jackson/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jackson/test.ql +++ b/java/ql/test/library-tests/frameworks/jackson/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/javax-json/test.expected b/java/ql/test/library-tests/frameworks/javax-json/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/javax-json/test.expected +++ b/java/ql/test/library-tests/frameworks/javax-json/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/javax-json/test.ql b/java/ql/test/library-tests/frameworks/javax-json/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/javax-json/test.ql +++ b/java/ql/test/library-tests/frameworks/javax-json/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jms/FlowTest.expected b/java/ql/test/library-tests/frameworks/jms/FlowTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jms/FlowTest.expected +++ b/java/ql/test/library-tests/frameworks/jms/FlowTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jms/FlowTest.ql b/java/ql/test/library-tests/frameworks/jms/FlowTest.ql index 3644b87e6d3..ef42c248189 100644 --- a/java/ql/test/library-tests/frameworks/jms/FlowTest.ql +++ b/java/ql/test/library-tests/frameworks/jms/FlowTest.ql @@ -14,15 +14,15 @@ module TestConfig implements DataFlow::ConfigSig { module TestFlow = TaintTracking::Global; -class JmsFlowTest extends InlineExpectationsTest { - JmsFlowTest() { this = "JmsFlowTest" } +module JmsFlowTest implements TestSig { + string getARelevantTag() { result = "tainted" } - override string getARelevantTag() { result = "tainted" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "tainted" and exists(TestFlow::PathNode sink | TestFlow::flowPath(_, sink) | location = sink.getNode().getLocation() and element = sink.getNode().toString() and value = "" ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected +++ b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql index 6d1d496075d..78b1dda532e 100644 --- a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql +++ b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql @@ -2,15 +2,15 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineExpectationsTest -class JmsRemoteSourcesTest extends InlineExpectationsTest { - JmsRemoteSourcesTest() { this = "JmsRemoteSourcesTest" } +module JmsRemoteSourcesTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "source" and exists(RemoteFlowSource source | location = source.getLocation() and element = source.toString() and value = "" ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/json-java/test.expected b/java/ql/test/library-tests/frameworks/json-java/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/json-java/test.expected +++ b/java/ql/test/library-tests/frameworks/json-java/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/json-java/test.ql b/java/ql/test/library-tests/frameworks/json-java/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/json-java/test.ql +++ b/java/ql/test/library-tests/frameworks/json-java/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/netty/generated/test.expected b/java/ql/test/library-tests/frameworks/netty/generated/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/netty/generated/test.expected +++ b/java/ql/test/library-tests/frameworks/netty/generated/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/netty/generated/test.ql b/java/ql/test/library-tests/frameworks/netty/generated/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/netty/generated/test.ql +++ b/java/ql/test/library-tests/frameworks/netty/generated/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/netty/manual/test.expected b/java/ql/test/library-tests/frameworks/netty/manual/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/netty/manual/test.expected +++ b/java/ql/test/library-tests/frameworks/netty/manual/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/netty/manual/test.ql b/java/ql/test/library-tests/frameworks/netty/manual/test.ql index 111db20f792..c67cf1835fa 100644 --- a/java/ql/test/library-tests/frameworks/netty/manual/test.ql +++ b/java/ql/test/library-tests/frameworks/netty/manual/test.ql @@ -13,10 +13,4 @@ module Config implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module Flow = TaintTracking::Global; - -class Test extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - Flow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/okhttp/test.expected b/java/ql/test/library-tests/frameworks/okhttp/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/okhttp/test.expected +++ b/java/ql/test/library-tests/frameworks/okhttp/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/okhttp/test.ql b/java/ql/test/library-tests/frameworks/okhttp/test.ql index 52e8a47132a..04cb3e7f7ac 100644 --- a/java/ql/test/library-tests/frameworks/okhttp/test.ql +++ b/java/ql/test/library-tests/frameworks/okhttp/test.ql @@ -10,10 +10,4 @@ module OkHttpFlowConfig implements DataFlow::ConfigSig { } } -module OkHttpFlow = DataFlow::Global; - -class OkHttpTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - OkHttpFlow::flow(src, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/play/test.expected b/java/ql/test/library-tests/frameworks/play/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/play/test.expected +++ b/java/ql/test/library-tests/frameworks/play/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/play/test.ql b/java/ql/test/library-tests/frameworks/play/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/play/test.ql +++ b/java/ql/test/library-tests/frameworks/play/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected +++ b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql index 47cc6b07ad2..0adb5a87783 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql +++ b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql @@ -11,10 +11,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected +++ b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql index 7ce7b2a6ebf..bc46ba9518b 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql +++ b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineExpectationsTest -class SourceTest extends InlineExpectationsTest { - SourceTest() { this = "SourceTest" } +module SourceTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "source" and exists(RemoteFlowSource source | not source.asParameter().getCallable().getDeclaringType().hasName("DefaultConsumer") and @@ -17,3 +15,5 @@ class SourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/ratpack/flow.expected b/java/ql/test/library-tests/frameworks/ratpack/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/ratpack/flow.expected +++ b/java/ql/test/library-tests/frameworks/ratpack/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/ratpack/flow.ql b/java/ql/test/library-tests/frameworks/ratpack/flow.ql index dae21e78f7c..eab631f0589 100644 --- a/java/ql/test/library-tests/frameworks/ratpack/flow.ql +++ b/java/ql/test/library-tests/frameworks/ratpack/flow.ql @@ -15,12 +15,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - HasFlowTest() { this = "HasFlowTest" } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/retrofit/test.expected b/java/ql/test/library-tests/frameworks/retrofit/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/retrofit/test.expected +++ b/java/ql/test/library-tests/frameworks/retrofit/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/retrofit/test.ql b/java/ql/test/library-tests/frameworks/retrofit/test.ql index e09f1ed41d7..0abbff1f958 100644 --- a/java/ql/test/library-tests/frameworks/retrofit/test.ql +++ b/java/ql/test/library-tests/frameworks/retrofit/test.ql @@ -10,8 +10,4 @@ module FlowConfig implements DataFlow::ConfigSig { } } -module Flow = DataFlow::Global; - -class RetrofitFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/beans/test.expected b/java/ql/test/library-tests/frameworks/spring/beans/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/beans/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/beans/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/beans/test.ql b/java/ql/test/library-tests/frameworks/spring/beans/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/beans/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/beans/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/cache/test.expected b/java/ql/test/library-tests/frameworks/spring/cache/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/cache/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/cache/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/cache/test.ql b/java/ql/test/library-tests/frameworks/spring/cache/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/cache/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/cache/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/context/flow.expected b/java/ql/test/library-tests/frameworks/spring/context/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/context/flow.expected +++ b/java/ql/test/library-tests/frameworks/spring/context/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/context/flow.ql b/java/ql/test/library-tests/frameworks/spring/context/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/context/flow.ql +++ b/java/ql/test/library-tests/frameworks/spring/context/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/controller/test.expected b/java/ql/test/library-tests/frameworks/spring/controller/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/controller/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/controller/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/controller/test.ql b/java/ql/test/library-tests/frameworks/spring/controller/test.ql index b6beb8e1e75..35b3d064e5a 100644 --- a/java/ql/test/library-tests/frameworks/spring/controller/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/controller/test.ql @@ -10,10 +10,4 @@ module ValueFlowConfig implements DataFlow::ConfigSig { } } -module ValueFlow = DataFlow::Global; - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - ValueFlow::flow(src, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/data/test.expected b/java/ql/test/library-tests/frameworks/spring/data/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/data/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/data/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/data/test.ql b/java/ql/test/library-tests/frameworks/spring/data/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/data/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/data/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/http/flow.expected b/java/ql/test/library-tests/frameworks/spring/http/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/http/flow.expected +++ b/java/ql/test/library-tests/frameworks/spring/http/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/http/flow.ql b/java/ql/test/library-tests/frameworks/spring/http/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/http/flow.ql +++ b/java/ql/test/library-tests/frameworks/spring/http/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/ui/test.expected b/java/ql/test/library-tests/frameworks/spring/ui/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/ui/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/ui/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/ui/test.ql b/java/ql/test/library-tests/frameworks/spring/ui/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/ui/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/ui/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/util/test.expected b/java/ql/test/library-tests/frameworks/spring/util/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/util/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/util/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/util/test.ql b/java/ql/test/library-tests/frameworks/spring/util/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/util/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/util/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/validation/test.expected b/java/ql/test/library-tests/frameworks/spring/validation/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/validation/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/validation/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/validation/test.ql b/java/ql/test/library-tests/frameworks/spring/validation/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/validation/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/validation/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.expected b/java/ql/test/library-tests/frameworks/spring/webutil/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/webutil/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/webutil/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.ql b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/webutil/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java b/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java new file mode 100644 index 00000000000..efab6d956d2 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java @@ -0,0 +1,42 @@ +import javax.annotation.PostConstruct; +import net.sf.json.JSONObject; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.DataBoundResolvable; +import org.kohsuke.stapler.DataBoundSetter; +import org.kohsuke.stapler.StaplerRequest; + +public class DataBoundPostConstructTest implements DataBoundResolvable { + + static Object source(String label) { + return null; + } + + static void sink(Object o) {} + + static void test() { + new DataBoundPostConstructTest(source("constructor")); + new DataBoundPostConstructTest(null).setField(source("setter")); + } + + private Object field; + + @DataBoundConstructor + public DataBoundPostConstructTest(Object field) { + this.field = field; + } + + @DataBoundSetter + public void setField(Object field) { + this.field = field; + } + + private Object bindResolve(StaplerRequest request, JSONObject src) { + sink(this.field); // $ hasValueFlow=constructor hasValueFlow=setter + return null; + } + + @PostConstruct + private void post() { + sink(this.field); // $ hasValueFlow=constructor hasValueFlow=setter + } +} diff --git a/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java b/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java new file mode 100644 index 00000000000..d437d1a7de3 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java @@ -0,0 +1,26 @@ +import hudson.model.Descriptor; +import org.kohsuke.stapler.HttpResponse; +import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerResponse; + +public class HttpResponseTest { + + Object source() { + return null; + } + + void sink(Object o) {} + + private class MyDescriptor extends Descriptor { + public HttpResponse doTest() { + return (MyHttpResponse) source(); + } + } + + private class MyHttpResponse implements HttpResponse { + @Override + public void generateResponse(StaplerRequest p0, StaplerResponse p1, Object p2) { + sink(this); // $ hasValueFlow + } + } +} diff --git a/java/ql/test/library-tests/frameworks/stapler/options b/java/ql/test/library-tests/frameworks/stapler/options index 5b75976846a..52f4c738a88 100644 --- a/java/ql/test/library-tests/frameworks/stapler/options +++ b/java/ql/test/library-tests/frameworks/stapler/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/jaxen-1.2.0 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/javax-annotation-api-1.3.2 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/stapler/test.expected b/java/ql/test/library-tests/frameworks/stapler/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/stapler/test.expected +++ b/java/ql/test/library-tests/frameworks/stapler/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/stapler/test.ql b/java/ql/test/library-tests/frameworks/stapler/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/stapler/test.ql +++ b/java/ql/test/library-tests/frameworks/stapler/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/stream/test.expected b/java/ql/test/library-tests/frameworks/stream/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.expected +++ b/java/ql/test/library-tests/frameworks/stream/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/stream/test.ql b/java/ql/test/library-tests/frameworks/stream/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.ql +++ b/java/ql/test/library-tests/frameworks/stream/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/thymeleaf/test.expected b/java/ql/test/library-tests/frameworks/thymeleaf/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/thymeleaf/test.expected +++ b/java/ql/test/library-tests/frameworks/thymeleaf/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/thymeleaf/test.ql b/java/ql/test/library-tests/frameworks/thymeleaf/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/thymeleaf/test.ql +++ b/java/ql/test/library-tests/frameworks/thymeleaf/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/logging/test.expected b/java/ql/test/library-tests/logging/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/logging/test.expected +++ b/java/ql/test/library-tests/logging/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/logging/test.ql b/java/ql/test/library-tests/logging/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/logging/test.ql +++ b/java/ql/test/library-tests/logging/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected +++ b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql index 224b03ea51c..a345d6df1fc 100644 --- a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql +++ b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl -class SinkTest extends InlineExpectationsTest { - SinkTest() { this = "SinkTest" } +module SinkTest implements TestSig { + string getARelevantTag() { result = "isSink" } - override string getARelevantTag() { result = "isSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "isSink" and exists(DataFlow::Node sink | sinkNode(sink, _) and @@ -20,12 +18,10 @@ class SinkTest extends InlineExpectationsTest { } } -class NeutralSinkTest extends InlineExpectationsTest { - NeutralSinkTest() { this = "NeutralSinkTest" } +module NeutralSinkTest implements TestSig { + string getARelevantTag() { result = "isNeutralSink" } - override string getARelevantTag() { result = "isNeutralSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "isNeutralSink" and exists(Call call, Callable callable | call.getCallee() = callable and @@ -38,3 +34,5 @@ class NeutralSinkTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/java/ql/test/library-tests/optional/test.expected b/java/ql/test/library-tests/optional/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/optional/test.expected +++ b/java/ql/test/library-tests/optional/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/optional/test.ql b/java/ql/test/library-tests/optional/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/optional/test.ql +++ b/java/ql/test/library-tests/optional/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/paths/test.expected b/java/ql/test/library-tests/paths/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/paths/test.expected +++ b/java/ql/test/library-tests/paths/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/paths/test.ql b/java/ql/test/library-tests/paths/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/paths/test.ql +++ b/java/ql/test/library-tests/paths/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/pathsanitizer/test.expected b/java/ql/test/library-tests/pathsanitizer/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/pathsanitizer/test.expected +++ b/java/ql/test/library-tests/pathsanitizer/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/pathsanitizer/test.ql b/java/ql/test/library-tests/pathsanitizer/test.ql index cefce3276e6..0a20ad012b9 100644 --- a/java/ql/test/library-tests/pathsanitizer/test.ql +++ b/java/ql/test/library-tests/pathsanitizer/test.ql @@ -10,12 +10,4 @@ module PathSanitizerConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof PathInjectionSanitizer } } -module PathSanitizerFlow = TaintTracking::Global; - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - PathSanitizerFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/regex/test.expected b/java/ql/test/library-tests/regex/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/regex/test.expected +++ b/java/ql/test/library-tests/regex/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/regex/test.ql b/java/ql/test/library-tests/regex/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/regex/test.ql +++ b/java/ql/test/library-tests/regex/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/scanner/test.expected b/java/ql/test/library-tests/scanner/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/scanner/test.expected +++ b/java/ql/test/library-tests/scanner/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/scanner/test.ql b/java/ql/test/library-tests/scanner/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/scanner/test.ql +++ b/java/ql/test/library-tests/scanner/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/xml/XMLTest.expected b/java/ql/test/library-tests/xml/XMLTest.expected index 61d3c801963..316503fd211 100644 --- a/java/ql/test/library-tests/xml/XMLTest.expected +++ b/java/ql/test/library-tests/xml/XMLTest.expected @@ -1,2 +1,4 @@ +failures +testFailures | test.xml:4:5:4:32 | attribute=value | Unexpected result: hasXmlResult= | -| test.xml:5:29:5:52 | $ hasXmlResult | Missing result:hasXmlResult= | \ No newline at end of file +| test.xml:5:29:5:52 | $ hasXmlResult | Missing result:hasXmlResult= | diff --git a/java/ql/test/library-tests/xml/XMLTest.ql b/java/ql/test/library-tests/xml/XMLTest.ql index c5011b848d4..40c5481e3e3 100644 --- a/java/ql/test/library-tests/xml/XMLTest.ql +++ b/java/ql/test/library-tests/xml/XMLTest.ql @@ -1,12 +1,10 @@ import semmle.code.xml.XML import TestUtilities.InlineExpectationsTest -class XmlTest extends InlineExpectationsTest { - XmlTest() { this = "XmlTest" } +module XmlTest implements TestSig { + string getARelevantTag() { result = "hasXmlResult" } - override string getARelevantTag() { result = "hasXmlResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXmlResult" and exists(XmlAttribute a | a.getLocation() = location and @@ -15,3 +13,5 @@ class XmlTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected b/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected index 0056c25bb53..3162056ab42 100644 --- a/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected +++ b/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected @@ -1,7 +1,7 @@ -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:5:5:5:19 | User.java:5:5:5:19 | after this call to getStrings | -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:13:12:13:26 | User.java:13:12:13:26 | after this call to getStrings | -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:38:12:38:26 | User.java:38:12:38:26 | after this call to getStrings | -| ExposesRep.java:13:30:13:41 | getStringMap | getStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:9:5:9:21 | User.java:9:5:9:21 | after this call to getStringMap | -| ExposesRep.java:17:15:17:24 | setStrings | setStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:22:5:22:6 | User.java:22:5:22:6 | through the variable ss | -| ExposesRep.java:21:15:21:26 | setStringMap | setStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:27:5:27:5 | User.java:27:5:27:5 | through the variable m | -| ExposesRep.java:29:14:29:21 | getArray | getArray exposes the internal representation stored in field array. The value may be modified $@. | User.java:31:5:31:18 | User.java:31:5:31:18 | after this call to getArray | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:5:5:5:19 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:13:12:13:26 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:38:12:38:26 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:13:30:13:41 | getStringMap | getStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:9:5:9:21 | getStringMap(...) | after this call to getStringMap | +| ExposesRep.java:17:15:17:24 | setStrings | setStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:22:5:22:6 | ss | through the variable ss | +| ExposesRep.java:21:15:21:26 | setStringMap | setStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:27:5:27:5 | m | through the variable m | +| ExposesRep.java:29:14:29:21 | getArray | getArray exposes the internal representation stored in field array. The value may be modified $@. | User.java:31:5:31:18 | getArray(...) | after this call to getArray | diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected index b362ef171f5..4fee1c07e06 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected @@ -8,7 +8,7 @@ | java.nio | 0 | 0 | 2 | 3 | 5 | 0.4 | 0.0 | 0.4 | 0.0 | NaN | 0.6 | | java.nio.charset | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.nio.file | 0 | 0 | 7 | 1 | 8 | 0.875 | 0.0 | 0.875 | 0.0 | NaN | 0.125 | -| java.sql | 0 | 0 | 2 | 14 | 16 | 0.125 | 0.0 | 0.125 | 0.0 | NaN | 0.875 | +| java.sql | 0 | 0 | 1 | 15 | 16 | 0.0625 | 0.0 | 0.0625 | 0.0 | NaN | 0.9375 | | java.text | 0 | 0 | 0 | 5 | 5 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.time | 0 | 0 | 0 | 17 | 17 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.time.chrono | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | diff --git a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected index 6cb849601d5..5f0ed7d05df 100644 --- a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected +++ b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected @@ -1,2 +1,3 @@ +| java.io.File#File(String) | 1 | | java.io.FileWriter#FileWriter(File) | 1 | | java.net.URL#openStream() | 1 | diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql index a07eb6892c3..26a6012d7fb 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql @@ -8,12 +8,10 @@ class TestRemoteSource extends RemoteFlowSource { override string getSourceType() { result = "TestSource" } } -class Test extends InlineExpectationsTest { - Test() { this = "PartialPathTraversalFromRemoteTest" } +module Test implements TestSig { + string getARelevantTag() { result = "hasTaintFlow" } - override string getARelevantTag() { result = "hasTaintFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTaintFlow" and exists(DataFlow::Node sink | PartialPathTraversalFromRemoteFlow::flowTo(sink) | sink.getLocation() = location and @@ -22,3 +20,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql index 7a6141b93ce..242bf9c3f54 100644 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.JndiInjectionQuery import TestUtilities.InlineExpectationsTest -class HasJndiInjectionTest extends InlineExpectationsTest { - HasJndiInjectionTest() { this = "HasJndiInjectionTest" } +module HasJndiInjectionTest implements TestSig { + string getARelevantTag() { result = "hasJndiInjection" } - override string getARelevantTag() { result = "hasJndiInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasJndiInjection" and exists(DataFlow::Node sink | JndiInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasJndiInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql index 1f5a3030cdb..4d5200477d8 100644 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.XsltInjectionQuery import TestUtilities.InlineExpectationsTest -class HasXsltInjectionTest extends InlineExpectationsTest { - HasXsltInjectionTest() { this = "HasXsltInjectionTest" } +module HasXsltInjectionTest implements TestSig { + string getARelevantTag() { result = "hasXsltInjection" } - override string getARelevantTag() { result = "hasXsltInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXsltInjection" and exists(DataFlow::Node sink | XsltInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasXsltInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected index 2ae893b5d1d..05dd12f9a5b 100644 --- a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected @@ -5,8 +5,8 @@ edges | Test.java:6:35:6:44 | arg : String | Test.java:22:15:22:27 | ... + ... : String | | Test.java:10:29:10:74 | {...} : String[] [[]] : String | Test.java:10:29:10:74 | new String[] | | Test.java:10:61:10:73 | ... + ... : String | Test.java:10:29:10:74 | {...} : String[] [[]] : String | -| Test.java:16:5:16:7 | cmd [post update] : List [] : String | Test.java:18:29:18:31 | cmd | -| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : List [] : String | +| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | Test.java:18:29:18:31 | cmd | +| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | Test.java:24:29:24:32 | cmd1 | | Test.java:22:15:22:27 | ... + ... : String | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | | Test.java:28:38:28:47 | arg : String | Test.java:29:44:29:64 | ... + ... | @@ -20,7 +20,7 @@ nodes | Test.java:10:29:10:74 | new String[] | semmle.label | new String[] | | Test.java:10:29:10:74 | {...} : String[] [[]] : String | semmle.label | {...} : String[] [[]] : String | | Test.java:10:61:10:73 | ... + ... : String | semmle.label | ... + ... : String | -| Test.java:16:5:16:7 | cmd [post update] : List [] : String | semmle.label | cmd [post update] : List [] : String | +| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | semmle.label | cmd [post update] : ArrayList [] : String | | Test.java:16:13:16:25 | ... + ... : String | semmle.label | ... + ... : String | | Test.java:18:29:18:31 | cmd | semmle.label | cmd | | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | semmle.label | cmd1 [post update] : String[] [[]] : String | diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java index 2854ffe30b7..1ffa72c4c0d 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java @@ -4,9 +4,6 @@ package test.cwe079.cwe.examples; - - - import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -14,13 +11,12 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - public class XSS extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { // BAD: a request parameter is written directly to the Servlet response stream - response.getWriter().print( - "The page \"" + request.getParameter("page") + "\" was not found."); // $xss + response.getWriter() + .print("The page \"" + request.getParameter("page") + "\" was not found."); // $xss // GOOD: servlet API encodes the error message HTML for the HTML context response.sendError(HttpServletResponse.SC_NOT_FOUND, @@ -29,35 +25,31 @@ public class XSS extends HttpServlet { // GOOD: escape HTML characters first response.sendError(HttpServletResponse.SC_NOT_FOUND, "The page \"" + encodeForHtml(request.getParameter("page")) + "\" was not found."); - + // GOOD: servlet API encodes the error message HTML for the HTML context response.sendError(HttpServletResponse.SC_NOT_FOUND, "The page \"" + capitalizeName(request.getParameter("page")) + "\" was not found."); - + // BAD: outputting the path of the resource response.getWriter().print("The path section of the URL was " + request.getPathInfo()); // $xss - // BAD: typical XSS, this time written to an OutputStream instead of a Writer + // BAD: typical XSS, this time written to an OutputStream instead of a Writer response.getOutputStream().write(request.getPathInfo().getBytes()); // $xss + + // GOOD: sanitizer + response.getOutputStream().write(hudson.Util.escape(request.getPathInfo()).getBytes()); // safe } - - - - - - /** - * Replace special characters in the given text such that it can - * be inserted into an HTML file and not be interpreted as including - * any HTML tags. + * Replace special characters in the given text such that it can be inserted into an HTML file + * and not be interpreted as including any HTML tags. */ static String encodeForHtml(String text) { // This is just a stub. For an example of a real implementation, see // the OWASP Java Encoder Project. return text.replace("<", "<"); } - + static String capitalizeName(String text) { return text.replace("foo inc", "Foo, Inc."); } diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql index 454f42112ea..5e901c83498 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.XssQuery import TestUtilities.InlineExpectationsTest -class XssTest extends InlineExpectationsTest { - XssTest() { this = "XssTest" } +module XssTest implements TestSig { + string getARelevantTag() { result = "xss" } - override string getARelevantTag() { result = "xss" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "xss" and exists(DataFlow::Node sink | XssFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class XssTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/options b/java/ql/test/query-tests/security/CWE-079/semmle/tests/options index 62fc56e6792..78c431eb683 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/options +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/javax-ws-rs-api-2.1.1/:${testdir}/../../../../../stubs/springframework-5.3.8:${testdir}/../../../../../stubs/javax-faces-2.3/:${testdir}/../../../../../stubs/google-android-9.0.0 +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/javax-ws-rs-api-2.1.1/:${testdir}/../../../../../stubs/springframework-5.3.8:${testdir}/../../../../../stubs/javax-faces-2.3/:${testdir}/../../../../../stubs/google-android-9.0.0:${testdir}/../../../../../stubs/jenkins diff --git a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected +++ b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql index bee1fa84ebc..7934ecd9d8d 100644 --- a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql +++ b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql @@ -9,12 +9,10 @@ private class SourceMethodSource extends RemoteFlowSource { override string getSourceType() { result = "source" } } -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "sqlInjection" } - override string getARelevantTag() { result = "sqlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "sqlInjection" and exists(DataFlow::Node sink | QueryInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -23,3 +21,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql index dd6aec2ebe3..b10e291d376 100644 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql @@ -3,12 +3,10 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.ArbitraryApkInstallationQuery import TestUtilities.InlineExpectationsTest -class HasApkInstallationTest extends InlineExpectationsTest { - HasApkInstallationTest() { this = "HasApkInstallationTest" } +module HasApkInstallationTest implements TestSig { + string getARelevantTag() { result = "hasApkInstallation" } - override string getARelevantTag() { result = "hasApkInstallation" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasApkInstallation" and exists(DataFlow::Node sink | ApkInstallationFlow::flowTo(sink) | sink.getLocation() = location and @@ -17,3 +15,5 @@ class HasApkInstallationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql index 9d979f125a8..bc39280407e 100644 --- a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.GroovyInjectionQuery import TestUtilities.InlineExpectationsTest -class HasGroovyInjectionTest extends InlineExpectationsTest { - HasGroovyInjectionTest() { this = "HasGroovyInjectionTest" } +module HasGroovyInjectionTest implements TestSig { + string getARelevantTag() { result = "hasGroovyInjection" } - override string getARelevantTag() { result = "hasGroovyInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasGroovyInjection" and exists(DataFlow::Node sink | GroovyInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasGroovyInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql index 9593ae1a8ee..07f1573b039 100644 --- a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.JexlInjectionQuery import TestUtilities.InlineExpectationsTest -class JexlInjectionTest extends InlineExpectationsTest { - JexlInjectionTest() { this = "HasJexlInjectionTest" } +module JexlInjectionTest implements TestSig { + string getARelevantTag() { result = "hasJexlInjection" } - override string getARelevantTag() { result = "hasJexlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasJexlInjection" and exists(DataFlow::Node sink | JexlInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class JexlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql index 8dc4127cbf1..f7599250077 100644 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.MvelInjectionQuery import TestUtilities.InlineExpectationsTest -class HasMvelInjectionTest extends InlineExpectationsTest { - HasMvelInjectionTest() { this = "HasMvelInjectionTest" } +module HasMvelInjectionTest implements TestSig { + string getARelevantTag() { result = "hasMvelInjection" } - override string getARelevantTag() { result = "hasMvelInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasMvelInjection" and exists(DataFlow::Node sink | MvelInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasMvelInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql index 78e147849f1..a017c96f60b 100644 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.SpelInjectionQuery import TestUtilities.InlineExpectationsTest -class HasSpelInjectionTest extends InlineExpectationsTest { - HasSpelInjectionTest() { this = "HasSpelInjectionTest" } +module HasSpelInjectionTest implements TestSig { + string getARelevantTag() { result = "hasSpelInjection" } - override string getARelevantTag() { result = "hasSpelInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasSpelInjection" and exists(DataFlow::Node sink | SpelInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasSpelInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql index 7e0a7ae1ae2..4c37e8a5f01 100644 --- a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.TemplateInjectionQuery import TestUtilities.InlineExpectationsTest -class TemplateInjectionTest extends InlineExpectationsTest { - TemplateInjectionTest() { this = "TemplateInjectionTest" } +module TemplateInjectionTest implements TestSig { + string getARelevantTag() { result = "hasTemplateInjection" } - override string getARelevantTag() { result = "hasTemplateInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTemplateInjection" and exists(DataFlow::Node sink | TemplateInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class TemplateInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql index 73a41b1bd8e..a2707b5df44 100644 --- a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql @@ -8,10 +8,4 @@ private class TestSource extends RemoteFlowSource { override string getSourceType() { result = "test source" } } -private class LogInjectionTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - LogInjectionFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected +++ b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql index ceaf8e11a4f..2ccb8fa7c52 100644 --- a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql +++ b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.StaticInitializationVectorQuery import TestUtilities.InlineExpectationsTest -class StaticInitializationVectorTest extends InlineExpectationsTest { - StaticInitializationVectorTest() { this = "StaticInitializationVectorTest" } +module StaticInitializationVectorTest implements TestSig { + string getARelevantTag() { result = "staticInitializationVector" } - override string getARelevantTag() { result = "staticInitializationVector" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "staticInitializationVector" and exists(DataFlow::Node sink | StaticInitializationVectorFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class StaticInitializationVectorTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql index d90039cf920..86feb7843ce 100644 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.IntentUriPermissionManipulationQuery - -class IntentUriPermissionManipulationTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - IntentUriPermissionManipulationFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected +++ b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql index fd18ccc27eb..e896e272aa4 100644 --- a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql +++ b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeCertTrustQuery import TestUtilities.InlineExpectationsTest -class UnsafeCertTrustTest extends InlineExpectationsTest { - UnsafeCertTrustTest() { this = "HasUnsafeCertTrustTest" } +module UnsafeCertTrustTest implements TestSig { + string getARelevantTag() { result = "hasUnsafeCertTrust" } - override string getARelevantTag() { result = "hasUnsafeCertTrust" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasUnsafeCertTrust" and exists(Expr unsafeTrust | unsafeTrust instanceof RabbitMQEnableHostnameVerificationNotSet @@ -20,3 +18,5 @@ class UnsafeCertTrustTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql index 6166e0fe239..70d242e7ebb 100644 --- a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.AndroidWebViewCertificateValidationQuery import TestUtilities.InlineExpectationsTest -class WebViewTest extends InlineExpectationsTest { - WebViewTest() { this = "WebViewTest" } +module WebViewTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(OnReceivedSslErrorMethod m | trustsAllCerts(m) and location = m.getLocation() and @@ -17,3 +15,5 @@ class WebViewTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql index 0f068d04679..11a59f51feb 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureTrustManagerQuery import TestUtilities.InlineExpectationsTest -class InsecureTrustManagerTest extends InlineExpectationsTest { - InsecureTrustManagerTest() { this = "InsecureTrustManagerTest" } +module InsecureTrustManagerTest implements TestSig { + string getARelevantTag() { result = "hasValueFlow" } - override string getARelevantTag() { result = "hasValueFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasValueFlow" and exists(DataFlow::Node sink | InsecureTrustManagerFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class InsecureTrustManagerTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected +++ b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql index 137dde369f9..ffe4673b62c 100644 --- a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql +++ b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.Mail import TestUtilities.InlineExpectationsTest -class InsecureJavaMailTest extends InlineExpectationsTest { - InsecureJavaMailTest() { this = "HasInsecureJavaMailTest" } +module InsecureJavaMailTest implements TestSig { + string getARelevantTag() { result = "hasInsecureJavaMail" } - override string getARelevantTag() { result = "hasInsecureJavaMail" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureJavaMail" and exists(MethodAccess ma | ma.getLocation() = location and @@ -22,3 +20,5 @@ class InsecureJavaMailTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql index 421b3a408c4..8b49ed472f5 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageAndroidDatabaseQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageAndroidDatabaseTest extends InlineExpectationsTest { - CleartextStorageAndroidDatabaseTest() { this = "CleartextStorageAndroidDatabaseTest" } +module CleartextStorageAndroidDatabaseTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageAndroidDatabase" } - override string getARelevantTag() { result = "hasCleartextStorageAndroidDatabase" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageAndroidDatabase" and exists(SensitiveSource data, LocalDatabaseOpenMethodAccess s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageAndroidDatabaseTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql index ab221086f81..7b7380ccedf 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageAndroidFilesystemQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageAndroidFilesystemTest extends InlineExpectationsTest { - CleartextStorageAndroidFilesystemTest() { this = "CleartextStorageAndroidFilesystemTest" } +module CleartextStorageAndroidFilesystemTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageAndroidFilesystem" } - override string getARelevantTag() { result = "hasCleartextStorageAndroidFilesystem" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageAndroidFilesystem" and exists(SensitiveSource data, LocalFileOpenCall s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageAndroidFilesystemTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql index cbd17429e5c..025daff6c82 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageSharedPrefsQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageSharedPrefsTest extends InlineExpectationsTest { - CleartextStorageSharedPrefsTest() { this = "CleartextStorageSharedPrefsTest" } +module CleartextStorageSharedPrefsTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageSharedPrefs" } - override string getARelevantTag() { result = "hasCleartextStorageSharedPrefs" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageSharedPrefs" and exists(SensitiveSource data, SharedPreferencesEditorMethodAccess s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageSharedPrefsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql index 1384a36e4ce..642495eebaa 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.InsufficientKeySizeQuery -class InsufficientKeySizeTest extends InlineExpectationsTest { - InsufficientKeySizeTest() { this = "InsufficientKeySize" } +module InsufficientKeySizeTest implements TestSig { + string getARelevantTag() { result = "hasInsufficientKeySize" } - override string getARelevantTag() { result = "hasInsufficientKeySize" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsufficientKeySize" and exists(KeySizeFlow::PathNode sink | KeySizeFlow::flowPath(_, sink) | sink.getNode().getLocation() = location and @@ -16,3 +14,5 @@ class InsufficientKeySizeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql index df6867bbefe..3d9a18fc1a8 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.MissingJWTSignatureCheckQuery import TestUtilities.InlineExpectationsTest -class HasMissingJwtSignatureCheckTest extends InlineExpectationsTest { - HasMissingJwtSignatureCheckTest() { this = "HasMissingJwtSignatureCheckTest" } +module HasMissingJwtSignatureCheckTest implements TestSig { + string getARelevantTag() { result = "hasMissingJwtSignatureCheck" } - override string getARelevantTag() { result = "hasMissingJwtSignatureCheck" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasMissingJwtSignatureCheck" and exists(DataFlow::Node sink | MissingJwtSignatureCheckFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasMissingJwtSignatureCheckTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql index 55c07bbd301..ae1258a66c5 100644 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.UnsafeContentUriResolutionQuery - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - UnsafeContentResolutionFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql index 1e4d7b42cb5..c1878d4976d 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.FragmentInjection import TestUtilities.InlineExpectationsTest -class FragmentInjectionInPreferenceActivityTest extends InlineExpectationsTest { - FragmentInjectionInPreferenceActivityTest() { this = "FragmentInjectionInPreferenceActivityTest" } +module FragmentInjectionInPreferenceActivityTest implements TestSig { + string getARelevantTag() { result = "hasPreferenceFragmentInjection" } - override string getARelevantTag() { result = "hasPreferenceFragmentInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasPreferenceFragmentInjection" and exists(IsValidFragmentMethod isValidFragment | isValidFragment.isUnsafe() | isValidFragment.getLocation() = location and @@ -16,3 +14,5 @@ class FragmentInjectionInPreferenceActivityTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql index 2771dd3af90..a1cff04f4c6 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql @@ -1,11 +1,4 @@ import java import semmle.code.java.security.FragmentInjectionQuery import TestUtilities.InlineFlowTest - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - FragmentInjectionTaintFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected +++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql index 76433545aa5..79a762ea209 100644 --- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql +++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.xml.AndroidManifest import TestUtilities.InlineExpectationsTest -class DebuggableAttributeEnabledTest extends InlineExpectationsTest { - DebuggableAttributeEnabledTest() { this = "DebuggableAttributeEnabledTest" } +module DebuggableAttributeEnabledTest implements TestSig { + string getARelevantTag() { result = "hasDebuggableAttributeEnabled" } - override string getARelevantTag() { result = "hasDebuggableAttributeEnabled" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasDebuggableAttributeEnabled" and exists(AndroidApplicationXmlElement androidAppElem | androidAppElem.isDebuggable() and @@ -19,3 +17,5 @@ class DebuggableAttributeEnabledTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql index 5bd19fb5b9e..99ac3d4e03c 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.WebviewDebuggingEnabledQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - WebviewDebugEnabledFlow::flow(src, sink) - } -} +import ValueFlowTest diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql index 4d10c798e33..68623825985 100644 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeDeserializationQuery import TestUtilities.InlineExpectationsTest -class UnsafeDeserializationTest extends InlineExpectationsTest { - UnsafeDeserializationTest() { this = "UnsafeDeserializationTest" } +module UnsafeDeserializationTest implements TestSig { + string getARelevantTag() { result = "unsafeDeserialization" } - override string getARelevantTag() { result = "unsafeDeserialization" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "unsafeDeserialization" and exists(DataFlow::Node sink | UnsafeDeserializationFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class UnsafeDeserializationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql index 29057edce71..c0384899d56 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureBasicAuthQuery import TestUtilities.InlineExpectationsTest -class HasInsecureBasicAuthTest extends InlineExpectationsTest { - HasInsecureBasicAuthTest() { this = "HasInsecureBasicAuthTest" } +module HasInsecureBasicAuthTest implements TestSig { + string getARelevantTag() { result = "hasInsecureBasicAuth" } - override string getARelevantTag() { result = "hasInsecureBasicAuth" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureBasicAuth" and exists(DataFlow::Node sink | InsecureBasicAuthFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasInsecureBasicAuthTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql index 4ae89d21313..f75550f5112 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureLdapAuthQuery import TestUtilities.InlineExpectationsTest -class InsecureLdapAuthenticationTest extends InlineExpectationsTest { - InsecureLdapAuthenticationTest() { this = "InsecureLdapAuthentication" } +module InsecureLdapAuthenticationTest implements TestSig { + string getARelevantTag() { result = "hasInsecureLdapAuth" } - override string getARelevantTag() { result = "hasInsecureLdapAuth" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureLdapAuth" and exists(DataFlow::Node sink | InsecureLdapUrlFlow::flowTo(sink) | BasicAuthFlow::flowTo(sink) and @@ -18,3 +16,5 @@ class InsecureLdapAuthenticationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected +++ b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql index 26ce8bc7fb7..caa50f9fa75 100644 --- a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql +++ b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.SensitiveKeyboardCacheQuery import TestUtilities.InlineExpectationsTest -class SensitiveKeyboardCacheTest extends InlineExpectationsTest { - SensitiveKeyboardCacheTest() { this = "SensitiveKeyboardCacheTest" } +module SensitiveKeyboardCacheTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location loc, string element, string tag, string value) { + predicate hasActualResult(Location loc, string element, string tag, string value) { exists(AndroidEditableXmlElement el | el = getASensitiveCachedInput() and loc = el.getLocation() and @@ -17,3 +15,5 @@ class SensitiveKeyboardCacheTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql index 5de153a9e35..389cff934a9 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.SensitiveLoggingQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - SensitiveLoggerFlow::flow(src, sink) - } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.expected b/java/ql/test/query-tests/security/CWE-611/XXE.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.expected +++ b/java/ql/test/query-tests/security/CWE-611/XXE.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.ql b/java/ql/test/query-tests/security/CWE-611/XXE.ql index f1463f561f3..ed12823a6bb 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.ql +++ b/java/ql/test/query-tests/security/CWE-611/XXE.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.XxeRemoteQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - XxeFlow::flow(src, sink) - } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql index 385ade9105b..3f39a4752bb 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql @@ -3,12 +3,10 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.XPathInjectionQuery import TestUtilities.InlineExpectationsTest -class HasXPathInjectionTest extends InlineExpectationsTest { - HasXPathInjectionTest() { this = "HasXPathInjectionTest" } +module HasXPathInjectionTest implements TestSig { + string getARelevantTag() { result = "hasXPathInjection" } - override string getARelevantTag() { result = "hasXPathInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXPathInjection" and exists(DataFlow::Node sink | XPathInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -17,3 +15,5 @@ class HasXPathInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected +++ b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql index 75af0160def..45dea80e72b 100644 --- a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql +++ b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql @@ -1,12 +1,10 @@ import TestUtilities.InlineExpectationsTest import semmle.code.java.security.regexp.PolynomialReDoSQuery -class HasPolyRedos extends InlineExpectationsTest { - HasPolyRedos() { this = "HasPolyRedos" } +module HasPolyRedos implements TestSig { + string getARelevantTag() { result = "hasPolyRedos" } - override string getARelevantTag() { result = "hasPolyRedos" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasPolyRedos" and exists(DataFlow::Node sink | PolynomialRedosFlow::flowTo(sink) and @@ -16,3 +14,5 @@ class HasPolyRedos extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.expected b/java/ql/test/query-tests/security/CWE-730/ReDoS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/ReDoS.expected +++ b/java/ql/test/query-tests/security/CWE-730/ReDoS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.ql b/java/ql/test/query-tests/security/CWE-730/ReDoS.ql index f7d5d7175b3..97719364f94 100644 --- a/java/ql/test/query-tests/security/CWE-730/ReDoS.ql +++ b/java/ql/test/query-tests/security/CWE-730/ReDoS.ql @@ -4,12 +4,10 @@ private import semmle.code.java.regex.RegexTreeView::RegexTreeView as TreeView import codeql.regex.nfa.ExponentialBackTracking::Make as ExponentialBackTracking import semmle.code.java.regex.regex -class HasExpRedos extends InlineExpectationsTest { - HasExpRedos() { this = "HasExpRedos" } +module HasExpRedos implements TestSig { + string getARelevantTag() { result = ["hasExpRedos", "hasParseFailure"] } - override string getARelevantTag() { result = ["hasExpRedos", "hasParseFailure"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasExpRedos" and exists(TreeView::RegExpTerm t | ExponentialBackTracking::hasReDoSResult(t, _, _, _) and @@ -28,3 +26,5 @@ class HasExpRedos extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql index f42de310988..afc621e0767 100644 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.regexp.RegexInjectionQuery -class RegexInjectionTest extends InlineExpectationsTest { - RegexInjectionTest() { this = "RegexInjectionTest" } +module RegexInjectionTest implements TestSig { + string getARelevantTag() { result = "hasRegexInjection" } - override string getARelevantTag() { result = "hasRegexInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasRegexInjection" and exists(RegexInjectionFlow::PathNode sink | RegexInjectionFlow::flowPath(_, sink) | location = sink.getNode().getLocation() and @@ -16,3 +14,5 @@ class RegexInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected +++ b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql index 4da1ca7fd5f..99fba4e9172 100644 --- a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql +++ b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeAndroidAccessQuery import TestUtilities.InlineExpectationsTest -class UnsafeAndroidAccessTest extends InlineExpectationsTest { - UnsafeAndroidAccessTest() { this = "HasUnsafeAndroidAccess" } +module UnsafeAndroidAccessTest implements TestSig { + string getARelevantTag() { result = "hasUnsafeAndroidAccess" } - override string getARelevantTag() { result = "hasUnsafeAndroidAccess" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasUnsafeAndroidAccess" and exists(DataFlow::Node sink | FetchUntrustedResourceFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class UnsafeAndroidAccessTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql index 01af77284f0..c1bc2049c76 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql @@ -2,11 +2,4 @@ import java import TestUtilities.InlineExpectationsTest import TestUtilities.InlineFlowTest import semmle.code.java.security.RsaWithoutOaepQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - RsaWithoutOaepFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql index 7d7b8e2d2a5..2b2290fad10 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsApiCallQuery import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsApiCallTest extends InlineExpectationsTest { - HardcodedCredentialsApiCallTest() { this = "HardcodedCredentialsApiCallTest" } +module HardcodedCredentialsApiCallTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsApiCall" } - override string getARelevantTag() { result = "HardcodedCredentialsApiCall" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsApiCall" and exists(DataFlow::Node sink | HardcodedCredentialApiCallFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsApiCallTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql index bde1851e43c..10698984828 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsComparison import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsComparisonTest extends InlineExpectationsTest { - HardcodedCredentialsComparisonTest() { this = "HardcodedCredentialsComparisonTest" } +module HardcodedCredentialsComparisonTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsComparison" } - override string getARelevantTag() { result = "HardcodedCredentialsComparison" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsComparison" and exists(Expr sink | isHardcodedCredentialsComparison(sink, _, _) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsComparisonTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql index 0fcf2f128ad..ab941d80a4e 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsSourceCallQuery import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsSourceCallTest extends InlineExpectationsTest { - HardcodedCredentialsSourceCallTest() { this = "HardcodedCredentialsSourceCallTest" } +module HardcodedCredentialsSourceCallTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsSourceCall" } - override string getARelevantTag() { result = "HardcodedCredentialsSourceCall" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsSourceCall" and exists(DataFlow::Node sink | HardcodedCredentialSourceCallFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsSourceCallTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql index 057bbbc2ab0..f734ca356ac 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedPasswordField import TestUtilities.InlineExpectationsTest -class HardcodedPasswordFieldTest extends InlineExpectationsTest { - HardcodedPasswordFieldTest() { this = "HardcodedPasswordFieldTest" } +module HardcodedPasswordFieldTest implements TestSig { + string getARelevantTag() { result = "HardcodedPasswordField" } - override string getARelevantTag() { result = "HardcodedPasswordField" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedPasswordField" and exists(Expr assigned | passwordFieldAssignedHardcodedValue(_, assigned) | assigned.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedPasswordFieldTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected +++ b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql index 20ca408f1b2..e77ea5ad228 100644 --- a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql +++ b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ConditionalBypassQuery import TestUtilities.InlineExpectationsTest -class ConditionalBypassTest extends InlineExpectationsTest { - ConditionalBypassTest() { this = "ConditionalBypassTest" } +module ConditionalBypassTest implements TestSig { + string getARelevantTag() { result = "hasConditionalBypassTest" } - override string getARelevantTag() { result = "hasConditionalBypassTest" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasConditionalBypassTest" and exists(DataFlow::Node sink | ConditionalBypassFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class ConditionalBypassTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql index 68db2593628..52dd8ad3417 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.OgnlInjectionQuery import TestUtilities.InlineExpectationsTest -class OgnlInjectionTest extends InlineExpectationsTest { - OgnlInjectionTest() { this = "HasOgnlInjection" } +module OgnlInjectionTest implements TestSig { + string getARelevantTag() { result = "hasOgnlInjection" } - override string getARelevantTag() { result = "hasOgnlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasOgnlInjection" and exists(DataFlow::Node sink | OgnlInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class OgnlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql b/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql index 865e6e8f0d3..41dbaad7d05 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.RequestForgeryConfig import TestUtilities.InlineExpectationsTest -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "SSRF" } - override string getARelevantTag() { result = "SSRF" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "SSRF" and exists(DataFlow::Node sink | RequestForgeryFlow::flowTo(sink) and @@ -17,3 +15,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql index 30ced62b2ed..baba5cac103 100644 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImproperIntentVerificationQuery import TestUtilities.InlineExpectationsTest -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasResult" and exists(Method orm | unverifiedSystemReceiver(_, orm, _) | orm.getLocation() = location and @@ -16,3 +14,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected +++ b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql index fbda52d36ab..934fc5c899b 100644 --- a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql +++ b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImplicitlyExportedAndroidComponent import TestUtilities.InlineExpectationsTest -class ImplicitlyExportedAndroidComponentTest extends InlineExpectationsTest { - ImplicitlyExportedAndroidComponentTest() { this = "ImplicitlyExportedAndroidComponentTest" } +module ImplicitlyExportedAndroidComponentTest implements TestSig { + string getARelevantTag() { result = "hasImplicitExport" } - override string getARelevantTag() { result = "hasImplicitExport" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasImplicitExport" and exists(ImplicitlyExportedAndroidComponent impExpAndroidComp | impExpAndroidComp.getLocation() = location and @@ -16,3 +14,5 @@ class ImplicitlyExportedAndroidComponentTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected +++ b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql index 9ba691685eb..c7ce16660e1 100644 --- a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql +++ b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.xml.AndroidManifest import TestUtilities.InlineExpectationsTest -class ContentProviderIncompletePermissionsTest extends InlineExpectationsTest { - ContentProviderIncompletePermissionsTest() { this = "ContentProviderIncompletePermissionsTest" } +module ContentProviderIncompletePermissionsTest implements TestSig { + string getARelevantTag() { result = "hasIncompletePermissions" } - override string getARelevantTag() { result = "hasIncompletePermissions" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasIncompletePermissions" and exists(AndroidProviderXmlElement provider | provider.getLocation() = location and @@ -20,3 +18,5 @@ class ContentProviderIncompletePermissionsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql index 972653380aa..e43b90f8ee8 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImplicitPendingIntentsQuery import TestUtilities.InlineExpectationsTest -class ImplicitPendingIntentsTest extends InlineExpectationsTest { - ImplicitPendingIntentsTest() { this = "ImplicitPendingIntentsTest" } +module ImplicitPendingIntentsTest implements TestSig { + string getARelevantTag() { result = "hasImplicitPendingIntent" } - override string getARelevantTag() { result = ["hasImplicitPendingIntent"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasImplicitPendingIntent" and exists(DataFlow::Node sink | ImplicitPendingIntentStartFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class ImplicitPendingIntentsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql index 0f1864398b4..cf7e46b6e8e 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql @@ -2,11 +2,4 @@ import java import semmle.code.java.security.AndroidSensitiveCommunicationQuery import TestUtilities.InlineExpectationsTest import TestUtilities.InlineFlowTest - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - SensitiveCommunicationFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql index fb7b1dfee43..0624ae91ca9 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql @@ -8,12 +8,10 @@ class TestSource extends RemoteFlowSource { override string getSourceType() { result = "test" } } -class ResultReceiverTest extends InlineExpectationsTest { - ResultReceiverTest() { this = "ResultReceiverTest" } +module ResultReceiverTest implements TestSig { + string getARelevantTag() { result = "hasSensitiveResultReceiver" } - override string getARelevantTag() { result = "hasSensitiveResultReceiver" } - - override predicate hasActualResult(Location loc, string element, string tag, string value) { + predicate hasActualResult(Location loc, string element, string tag, string value) { exists(SensitiveResultReceiverFlow::PathNode sink | isSensitiveResultReceiver(_, sink, _) and element = sink.toString() and @@ -23,3 +21,5 @@ class ResultReceiverTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql index 7b74855caa5..6c4d121a2bc 100644 --- a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.AndroidIntentRedirectionQuery import TestUtilities.InlineExpectationsTest -class HasAndroidIntentRedirectionTest extends InlineExpectationsTest { - HasAndroidIntentRedirectionTest() { this = "HasAndroidIntentRedirectionTest" } +module HasAndroidIntentRedirectionTest implements TestSig { + string getARelevantTag() { result = "hasAndroidIntentRedirection" } - override string getARelevantTag() { result = "hasAndroidIntentRedirection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasAndroidIntentRedirection" and exists(DataFlow::Node sink | IntentRedirectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasAndroidIntentRedirectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java b/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java new file mode 100644 index 00000000000..a7fde6ae23b --- /dev/null +++ b/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java @@ -0,0 +1,13 @@ +package javax.annotation; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Documented +@Retention(RUNTIME) +@Target(METHOD) +public @interface PostConstruct { +} diff --git a/java/ql/test/stubs/jenkins/hudson/FilePath.java b/java/ql/test/stubs/jenkins/hudson/FilePath.java new file mode 100644 index 00000000000..24a35901e35 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/FilePath.java @@ -0,0 +1,34 @@ +package hudson; + +import java.io.File; +import java.io.InputStream; +import java.nio.file.OpenOption; + +public class FilePath { + + public static InputStream newInputStreamDenyingSymlinkAsNeeded(File file, + String verificationRoot, OpenOption... openOption) { + return null; + } + + public static InputStream openInputStream(File file, OpenOption[] openOptions) { + return null; + } + + public InputStream read() { + return null; + } + + public InputStream read(FilePath rootPath, OpenOption... openOptions) { + return null; + } + + public InputStream readFromOffset(long offset) { + return null; + } + + public String readToString() { + return null; + } +} + diff --git a/java/ql/test/stubs/jenkins/hudson/Util.java b/java/ql/test/stubs/jenkins/hudson/Util.java new file mode 100644 index 00000000000..61e357abb52 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/Util.java @@ -0,0 +1,7 @@ +package hudson; + +public class Util { + public static String escape(String text) { + return null; + } +} diff --git a/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java b/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java new file mode 100644 index 00000000000..613ed31f665 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java @@ -0,0 +1,5 @@ +package hudson.model; + +public abstract class Descriptor { + +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java new file mode 100644 index 00000000000..6909171def8 --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java @@ -0,0 +1,13 @@ +package org.kohsuke.stapler; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target(CONSTRUCTOR) +@Documented +public @interface DataBoundConstructor { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java new file mode 100644 index 00000000000..0fc9cffd0aa --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java @@ -0,0 +1,4 @@ +package org.kohsuke.stapler; + +public interface DataBoundResolvable { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java new file mode 100644 index 00000000000..ff11084fcbd --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java @@ -0,0 +1,14 @@ +package org.kohsuke.stapler; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target({METHOD, FIELD}) +@Documented +public @interface DataBoundSetter { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java new file mode 100644 index 00000000000..1674e667233 --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java @@ -0,0 +1,13 @@ +package org.kohsuke.stapler; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import static java.lang.annotation.ElementType.ANNOTATION_TYPE;; + +@Retention(RUNTIME) +@Target(ANNOTATION_TYPE) +@Documented +public @interface InjectedParameter { +} diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 0c8de4f1bbc..3190b683d34 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.0.2" + "typescript": "5.1.3" }, "scripts": { "build": "tsc --project tsconfig.json", diff --git a/javascript/extractor/lib/typescript/src/main.ts b/javascript/extractor/lib/typescript/src/main.ts index 2e9f26b6953..2594f4e35f5 100644 --- a/javascript/extractor/lib/typescript/src/main.ts +++ b/javascript/extractor/lib/typescript/src/main.ts @@ -579,7 +579,6 @@ function handleOpenProjectCommand(command: OpenProjectCommand) { // inverse mapping, nor a way to enumerate all known module names. So we discover all // modules on the type roots (usually "node_modules/@types" but this is configurable). let typeRoots = ts.getEffectiveTypeRoots(config.options, { - directoryExists: (path) => ts.sys.directoryExists(path), getCurrentDirectory: () => basePath, }); diff --git a/javascript/extractor/lib/typescript/yarn.lock b/javascript/extractor/lib/typescript/yarn.lock index 88d32ae6b3a..355c257cf69 100644 --- a/javascript/extractor/lib/typescript/yarn.lock +++ b/javascript/extractor/lib/typescript/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== -typescript@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" - integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== +typescript@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== diff --git a/javascript/extractor/src/com/semmle/js/extractor/Main.java b/javascript/extractor/src/com/semmle/js/extractor/Main.java index 4f8bb2c1ced..2a188676924 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/Main.java +++ b/javascript/extractor/src/com/semmle/js/extractor/Main.java @@ -41,7 +41,7 @@ public class Main { * A version identifier that should be updated every time the extractor changes in such a way that * it may produce different tuples for the same file under the same {@link ExtractorConfig}. */ - public static final String EXTRACTOR_VERSION = "2023-03-16"; + public static final String EXTRACTOR_VERSION = "2023-04-19"; public static final Pattern NEWLINE = Pattern.compile("\n"); diff --git a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java index e34d552b777..7b68106bb3f 100644 --- a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java +++ b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java @@ -1552,8 +1552,13 @@ public class TypeScriptASTConverter { } private Node convertJsxAttribute(JsonObject node, SourceLocation loc) throws ParseError { + JsonObject nameNode = node.get("name").getAsJsonObject(); + if (nameNode.get("name") != null) { + // it's a namespaced attribute + nameNode = nameNode.get("name").getAsJsonObject(); + } return new JSXAttribute( - loc, convertJSXName(convertChild(node, "name")), convertChild(node, "initializer")); + loc, convertJSXName(((Expression)convertNode(nameNode, null))), convertChild(node, "initializer")); // 2 } private Node convertJsxClosingElement(JsonObject node, SourceLocation loc) throws ParseError { diff --git a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll index 5532c8d4726..6836e14e72c 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll +++ b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll @@ -166,6 +166,3 @@ abstract class AtmConfig extends JS::TaintTracking::Configuration { ) } } - -/** DEPRECATED: Alias for AtmConfig */ -deprecated class ATMConfig = AtmConfig; diff --git a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll index 62531a9d423..0fc660796c4 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll +++ b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll @@ -41,9 +41,6 @@ AstNode getAnAstNodeToFeaturize(Function f) { not result = f.getIdentifier() } -/** DEPRECATED: Alias for getAnAstNodeToFeaturize */ -deprecated ASTNode getAnASTNodeToFeaturize(Function f) { result = getAnAstNodeToFeaturize(f) } - /** * Gets a function that contains the endpoint. * @@ -130,9 +127,6 @@ AstNode getAnAstNodeWithAFeature(Function f) { result = getAnAstNodeToFeaturize(f) } -/** DEPRECATED: Alias for getAnAstNodeWithAFeature */ -deprecated ASTNode getAnASTNodeWithAFeature(Function f) { result = getAnAstNodeWithAFeature(f) } - /** Returns the number of source-code characters in a function. */ int getNumCharsInFunction(Function f) { result = diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 3ac3bc23481..47c4130c3af 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,23 @@ +## 0.6.3 + +### Major Analysis Improvements + +* Added support for TypeScript 5.1. + +### Minor Analysis Improvements + +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `localTaintStep` predicate from `DataFlow.qll`. +* Deleted the deprecated `stringStep`, and `localTaintStep` predicates from `TaintTracking.qll`. +* Deleted many modules that started with a lowercase letter. Use the versions that start with an uppercase letter instead. +* Deleted the deprecated `HtmlInjectionConfiguration` and `JQueryHtmlOrSelectorInjectionConfiguration` classes from `DomBasedXssQuery.qll`, use `Configuration` instead. +* Deleted the deprecated `DefiningIdentifier` class and the `Definitions.qll` file it was in. Use `SsaDefinition` instead. +* Deleted the deprecated `definitionReaches`, `localDefinitionReaches`, `getAPseudoDefinitionInput`, `nextDefAfter`, and `localDefinitionOverwrites` predicates from `DefUse.qll`. +* Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `command-line-injection` to `command-injection` + * `credentials[kind]` to `credentials-kind` +* Added a support of sub modules in `node_modules`. + ## 0.6.2 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/Expressions/DOMProperties.qll b/javascript/ql/lib/Expressions/DOMProperties.qll index 17f53f8a366..fdb7e6024c2 100644 --- a/javascript/ql/lib/Expressions/DOMProperties.qll +++ b/javascript/ql/lib/Expressions/DOMProperties.qll @@ -4,9 +4,6 @@ import semmle.javascript.Externs -/** DEPRECATED: Alias for isDomRootType */ -deprecated predicate isDOMRootType = isDomRootType/1; - /** Holds if `p` is declared as a property of a DOM class or interface. */ pragma[nomagic] predicate isDomProperty(string p) { @@ -14,6 +11,3 @@ predicate isDomProperty(string p) { isDomRootType(emd.getDeclaringType().getASupertype*()) ) } - -/** DEPRECATED: Alias for isDomProperty */ -deprecated predicate isDOMProperty = isDomProperty/1; diff --git a/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md b/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md deleted file mode 100644 index 5ef95cf7d58..00000000000 --- a/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- - -- Added a support of sub modules in `node_modules`. diff --git a/javascript/ql/lib/change-notes/2023-05-12-update-js-sink-kinds.md b/javascript/ql/lib/change-notes/2023-05-12-update-js-sink-kinds.md deleted file mode 100644 index 9d215924623..00000000000 --- a/javascript/ql/lib/change-notes/2023-05-12-update-js-sink-kinds.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. - * `command-line-injection` to `command-injection` - * `credentials[kind]` to `credentials-kind` diff --git a/javascript/ql/lib/change-notes/released/0.6.3.md b/javascript/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..c87e2deb626 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,19 @@ +## 0.6.3 + +### Major Analysis Improvements + +* Added support for TypeScript 5.1. + +### Minor Analysis Improvements + +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `localTaintStep` predicate from `DataFlow.qll`. +* Deleted the deprecated `stringStep`, and `localTaintStep` predicates from `TaintTracking.qll`. +* Deleted many modules that started with a lowercase letter. Use the versions that start with an uppercase letter instead. +* Deleted the deprecated `HtmlInjectionConfiguration` and `JQueryHtmlOrSelectorInjectionConfiguration` classes from `DomBasedXssQuery.qll`, use `Configuration` instead. +* Deleted the deprecated `DefiningIdentifier` class and the `Definitions.qll` file it was in. Use `SsaDefinition` instead. +* Deleted the deprecated `definitionReaches`, `localDefinitionReaches`, `getAPseudoDefinitionInput`, `nextDefAfter`, and `localDefinitionOverwrites` predicates from `DefUse.qll`. +* Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `command-line-injection` to `command-injection` + * `credentials[kind]` to `credentials-kind` +* Added a support of sub modules in `node_modules`. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 5501a2a1cc5..b7dafe32c5d 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.2 +lastReleaseVersion: 0.6.3 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 52962f549b0..bd3f17d627f 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/javascript-all -version: 0.6.3-dev +version: 0.6.4-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index 895922f952f..e4a1cf944c4 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -184,9 +184,6 @@ class AstNode extends @ast_node, NodeInStmtContainer { } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - /** * Holds if the given file is a `.d.ts` file. */ @@ -339,9 +336,6 @@ class EventHandlerCode extends @event_handler, CodeInAttribute { } */ class JavaScriptUrl extends @javascript_url, CodeInAttribute { } -/** DEPRECATED: Alias for JavaScriptUrl */ -deprecated class JavaScriptURL = JavaScriptUrl; - /** * A toplevel syntactic entity containing Closure-style externs definitions. * diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index c543607e73f..080a1bc1209 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -636,9 +636,6 @@ module API { /** Gets an API-node for this entry point. */ API::Node getANode() { result = root().getASuccessor(Label::entryPoint(this)) } - - /** DEPRECATED. Use `getANode()` instead. */ - deprecated API::Node getNode() { result = this.getANode() } } /** diff --git a/javascript/ql/lib/semmle/javascript/DefUse.qll b/javascript/ql/lib/semmle/javascript/DefUse.qll index 8ad710fdc57..a9d021f939e 100644 --- a/javascript/ql/lib/semmle/javascript/DefUse.qll +++ b/javascript/ql/lib/semmle/javascript/DefUse.qll @@ -243,71 +243,3 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { */ SsaVariable getSsaVariable() { result.getAUse() = this } } - -/** - * Holds if the definition of `v` in `def` reaches `use` along some control flow path - * without crossing another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate definitionReaches(Variable v, VarDef def, VarUse use) { - v = use.getVariable() and - exists(BasicBlock bb, int i, int next | next = nextDefAfter(bb, v, i, def) | - exists(int j | j in [i + 1 .. next - 1] | bb.useAt(j, v, use)) - or - exists(BasicBlock succ | succ = bb.getASuccessor() | - succ.isLiveAtEntry(v, use) and - next = bb.length() - ) - ) -} - -/** - * Holds if the definition of local variable `v` in `def` reaches `use` along some control flow path - * without crossing another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate localDefinitionReaches(LocalVariable v, VarDef def, VarUse use) { - exists(SsaExplicitDefinition ssa | - ssa.defines(def, v) and - ssa = getAPseudoDefinitionInput*(use.getSsaVariable().getDefinition()) - ) -} - -/** - * Holds if `nd` is a pseudo-definition and the result is one of its inputs. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated private SsaDefinition getAPseudoDefinitionInput(SsaDefinition nd) { - result = nd.(SsaPseudoDefinition).getAnInput() -} - -/** - * Holds if `d` is a definition of `v` at index `i` in `bb`, and the result is the next index - * in `bb` after `i` at which the same variable is defined, or `bb.length()` if there is none. - */ -deprecated private int nextDefAfter(BasicBlock bb, Variable v, int i, VarDef d) { - bb.defAt(i, v, d) and - result = - min(int jj | - (bb.defAt(jj, v, _) or jj = bb.length()) and - jj > i - ) -} - -/** - * Holds if the `later` definition of `v` could overwrite its `earlier` definition. - * - * This is the case if there is a path from `earlier` to `later` that does not cross - * another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate localDefinitionOverwrites(LocalVariable v, VarDef earlier, VarDef later) { - exists(BasicBlock bb, int next | next = nextDefAfter(bb, v, _, earlier) | - bb.defAt(next, v, later) - or - exists(BasicBlock succ | succ = bb.getASuccessor() | - succ.localMayBeOverwritten(v, later) and - next = bb.length() - ) - ) -} diff --git a/javascript/ql/lib/semmle/javascript/E4X.qll b/javascript/ql/lib/semmle/javascript/E4X.qll index 47f1b8e4189..cd112d60664 100644 --- a/javascript/ql/lib/semmle/javascript/E4X.qll +++ b/javascript/ql/lib/semmle/javascript/E4X.qll @@ -16,9 +16,6 @@ module E4X { */ class XmlAnyName extends Expr, @e4x_xml_anyname { } - /** DEPRECATED: Alias for XmlAnyName */ - deprecated class XMLAnyName = XmlAnyName; - /** * An E4X qualified identifier. * @@ -57,9 +54,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlQualifiedIdentifier */ - deprecated class XMLQualifiedIdentifier = XmlQualifiedIdentifier; - /** * An E4X attribute selector. * @@ -89,9 +83,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlAttributeSelector */ - deprecated class XMLAttributeSelector = XmlAttributeSelector; - /** * An E4X filter expression. * @@ -117,9 +108,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlFilterExpression */ - deprecated class XMLFilterExpression = XmlFilterExpression; - /** * An E4X "dot-dot" expression. * @@ -144,7 +132,4 @@ module E4X { result = this.getBase().getFirstControlFlowNode() } } - - /** DEPRECATED: Alias for XmlDotDotExpression */ - deprecated class XMLDotDotExpression = XmlDotDotExpression; } diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index c0d78c078da..1e56fc00657 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -61,9 +61,6 @@ class JsonValue extends @json_value, Locatable { override string getAPrimaryQlClass() { result = "JsonValue" } } -/** DEPRECATED: Alias for JsonValue */ -deprecated class JSONValue = JsonValue; - /** * A JSON-encoded primitive value. * @@ -85,9 +82,6 @@ abstract class JsonPrimitiveValue extends JsonValue { string getRawValue() { json_literals(_, result, this) } } -/** DEPRECATED: Alias for JsonPrimitiveValue */ -deprecated class JSONPrimitiveValue = JsonPrimitiveValue; - /** * A JSON-encoded null value. * @@ -101,9 +95,6 @@ class JsonNull extends @json_null, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonNull" } } -/** DEPRECATED: Alias for JsonNull */ -deprecated class JSONNull = JsonNull; - /** * A JSON-encoded Boolean value. * @@ -118,9 +109,6 @@ class JsonBoolean extends @json_boolean, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonBoolean" } } -/** DEPRECATED: Alias for JsonBoolean */ -deprecated class JSONBoolean = JsonBoolean; - /** * A JSON-encoded number. * @@ -135,9 +123,6 @@ class JsonNumber extends @json_number, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonNumber" } } -/** DEPRECATED: Alias for JsonNumber */ -deprecated class JSONNumber = JsonNumber; - /** * A JSON-encoded string value. * @@ -151,9 +136,6 @@ class JsonString extends @json_string, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonString" } } -/** DEPRECATED: Alias for JsonString */ -deprecated class JSONString = JsonString; - /** * A JSON-encoded array. * @@ -170,9 +152,6 @@ class JsonArray extends @json_array, JsonValue { string getElementStringValue(int i) { result = this.getElementValue(i).getStringValue() } } -/** DEPRECATED: Alias for JsonArray */ -deprecated class JSONArray = JsonArray; - /** * A JSON-encoded object. * @@ -189,9 +168,6 @@ class JsonObject extends @json_object, JsonValue { string getPropStringValue(string name) { result = this.getPropValue(name).getStringValue() } } -/** DEPRECATED: Alias for JsonObject */ -deprecated class JSONObject = JsonObject; - /** * An error reported by the JSON parser. */ @@ -200,6 +176,3 @@ class JsonParseError extends @json_parse_error, Error { override string getMessage() { json_errors(this, result) } } - -/** DEPRECATED: Alias for JsonParseError */ -deprecated class JSONParseError = JsonParseError; diff --git a/javascript/ql/lib/semmle/javascript/JSX.qll b/javascript/ql/lib/semmle/javascript/JSX.qll index fa8f79fb2bb..6fd7c775d4e 100644 --- a/javascript/ql/lib/semmle/javascript/JSX.qll +++ b/javascript/ql/lib/semmle/javascript/JSX.qll @@ -30,9 +30,6 @@ class JsxNode extends Expr, @jsx_element { override string getAPrimaryQlClass() { result = "JsxNode" } } -/** DEPRECATED: Alias for JsxNode */ -deprecated class JSXNode = JsxNode; - /** * A JSX element. * @@ -81,9 +78,6 @@ class JsxElement extends JsxNode { deprecated predicate isHTMLElement() { this.isHtmlElement() } } -/** DEPRECATED: Alias for JsxElement */ -deprecated class JSXElement = JsxElement; - /** * A JSX fragment. * @@ -105,9 +99,6 @@ class JsxFragment extends JsxNode { override string getAPrimaryQlClass() { result = "JsxFragment" } } -/** DEPRECATED: Alias for JsxFragment */ -deprecated class JSXFragment = JsxFragment; - /** * An attribute of a JSX element, including spread attributes. * @@ -154,9 +145,6 @@ class JsxAttribute extends AstNode, @jsx_attribute { override string getAPrimaryQlClass() { result = "JsxAttribute" } } -/** DEPRECATED: Alias for JsxAttribute */ -deprecated class JSXAttribute = JsxAttribute; - /** * A spread attribute of a JSX element. * @@ -175,9 +163,6 @@ class JsxSpreadAttribute extends JsxAttribute { } } -/** DEPRECATED: Alias for JsxSpreadAttribute */ -deprecated class JSXSpreadAttribute = JsxSpreadAttribute; - /** * A namespace-qualified name such as `n:a`. * @@ -201,9 +186,6 @@ class JsxQualifiedName extends Expr, @jsx_qualified_name { override string getAPrimaryQlClass() { result = "JsxQualifiedName" } } -/** DEPRECATED: Alias for JsxQualifiedName */ -deprecated class JSXQualifiedName = JsxQualifiedName; - /** * A name of an JSX element or attribute (which is * always an identifier, a dot expression, or a qualified @@ -244,9 +226,6 @@ class JsxName extends Expr { } } -/** DEPRECATED: Alias for JsxName */ -deprecated class JSXName = JsxName; - /** * An interpolating expression that interpolates nothing. * @@ -260,9 +239,6 @@ class JsxEmptyExpr extends Expr, @jsx_empty_expr { override string getAPrimaryQlClass() { result = "JsxEmptyExpr" } } -/** DEPRECATED: Alias for JsxEmptyExpr */ -deprecated class JSXEmptyExpr = JsxEmptyExpr; - /** * A legacy `@jsx` pragma. * @@ -284,6 +260,3 @@ class JsxPragma extends JSDocTag { /** DEPRECATED: Alias for getDomName */ deprecated string getDOMName() { result = this.getDomName() } } - -/** DEPRECATED: Alias for JsxPragma */ -deprecated class JSXPragma = JsxPragma; diff --git a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll index 0ca2ec2ac2e..d128dd9a653 100644 --- a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll @@ -77,6 +77,3 @@ class PrettyJsonTaintStep extends TaintTracking::SharedTaintStep { ) } } - -/** DEPRECATED: Alias for PrettyJsonTaintStep */ -deprecated class PrettyJSONTaintStep = PrettyJsonTaintStep; diff --git a/javascript/ql/lib/semmle/javascript/NPM.qll b/javascript/ql/lib/semmle/javascript/NPM.qll index e1059d94930..0bf92c5d29a 100644 --- a/javascript/ql/lib/semmle/javascript/NPM.qll +++ b/javascript/ql/lib/semmle/javascript/NPM.qll @@ -262,9 +262,6 @@ class PackageJson extends JsonObject { Module getTypingsModule() { result.getFile() = this.getTypingsFile() } } -/** DEPRECATED: Alias for PackageJson */ -deprecated class PackageJSON = PackageJson; - /** * A representation of bug tracker information for an NPM package. */ @@ -370,9 +367,6 @@ class NpmPackage extends @folder { /** Gets the `package.json` object of this package. */ PackageJson getPackageJson() { result = pkg } - /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } - /** Gets the name of this package. */ string getPackageName() { result = this.getPackageJson().getPackageName() } @@ -411,9 +405,6 @@ class NpmPackage extends @folder { predicate declaresDependency(string p, string v) { pkg.declaresDependency(p, v) } } -/** DEPRECATED: Alias for NpmPackage */ -deprecated class NPMPackage = NpmPackage; - /** * Gets the parent folder of `c`, provided that they belong to the same NPM * package; that is, `c` must not be a `node_modules` folder. diff --git a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll index 468d31c2c02..7231143ed55 100644 --- a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll +++ b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll @@ -198,7 +198,7 @@ class MainModulePath extends PathExpr, @json_string { } /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } + deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } override string getValue() { result = this.(JsonString).getValue() } @@ -259,7 +259,7 @@ private class FilesPath extends PathExpr, @json_string { PackageJson getPackageJson() { result = pkg } /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } + deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } override string getValue() { result = this.(JsonString).getValue() } diff --git a/javascript/ql/lib/semmle/javascript/PrintAst.qll b/javascript/ql/lib/semmle/javascript/PrintAst.qll index 5c4960e041c..0defda1dc6b 100644 --- a/javascript/ql/lib/semmle/javascript/PrintAst.qll +++ b/javascript/ql/lib/semmle/javascript/PrintAst.qll @@ -391,9 +391,6 @@ private module PrintJavaScript { } } - /** DEPRECATED: Alias for JsxNodeNode */ - deprecated class JSXNodeNode = JsxNodeNode; - /** * An aggregate node representing all the attributes in a `JSXNode`. */ @@ -409,17 +406,11 @@ private module PrintJavaScript { */ JsxElement getJsxElement() { result = n } - /** DEPRECATED: Alias for getJsxElement */ - deprecated JSXElement getJSXElement() { result = this.getJsxElement() } - override PrintAstNode getChild(int childIndex) { result.(ElementNode).getElement() = n.getAttribute(childIndex) } } - /** DEPRECATED: Alias for JsxAttributesNode */ - deprecated class JSXAttributesNode = JsxAttributesNode; - /** * An aggregate node representing all the body elements in a `JSXNode`. */ @@ -435,17 +426,11 @@ private module PrintJavaScript { */ JsxNode getJsxNode() { result = n } - /** DEPRECATED: Alias for getJsxNode */ - deprecated JSXNode getJSXNode() { result = this.getJsxNode() } - override PrintAstNode getChild(int childIndex) { result.(ElementNode).getElement() = n.getBodyElement(childIndex) } } - /** DEPRECATED: Alias for JsxBodyElementsNode */ - deprecated class JSXBodyElementsNode = JsxBodyElementsNode; - /** * A node representing any `ASTNode` that has type-parameters. * @@ -582,9 +567,6 @@ private module PrintJson { } } - /** DEPRECATED: Alias for JsonNode */ - deprecated class JSONNode = JsonNode; - /** Provied predicates for pretty printing JSON. */ private module PrettyPrinting { /** @@ -655,9 +637,6 @@ module PrintYaml { } } - /** DEPRECATED: Alias for YamlNodeNode */ - deprecated class YAMLNodeNode = YamlNodeNode; - /** * A print node representing a `YAMLMapping`. * @@ -671,9 +650,6 @@ module PrintYaml { } } - /** DEPRECATED: Alias for YamlMappingNode */ - deprecated class YAMLMappingNode = YamlMappingNode; - /** * A print node representing the `i`th mapping in `mapping`. */ @@ -703,14 +679,8 @@ module PrintYaml { childIndex = 1 and result.(YamlNodeNode).getValue() = mapping.getValueNode(i) } } - - /** DEPRECATED: Alias for YamlMappingMapNode */ - deprecated class YAMLMappingMapNode = YamlMappingMapNode; } -/** DEPRECATED: Alias for PrintYaml */ -deprecated module PrintYAML = PrintYaml; - /** * Classes for printing HTML AST. */ @@ -741,9 +711,6 @@ module PrintHtml { } } - /** DEPRECATED: Alias for HtmlElementNode */ - deprecated class HTMLElementNode = HtmlElementNode; - /** * A print node representing an HTML node in a .html file. */ @@ -757,9 +724,6 @@ module PrintHtml { } } - /** DEPRECATED: Alias for HtmlScriptElementNode */ - deprecated class HTMLScriptElementNode = HtmlScriptElementNode; - /** * A print node representing the code inside a `