mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
Merge branch 'master' into csharp/maybe-null-path-query
This commit is contained in:
@@ -117,17 +117,19 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
public void OperatorCall(ExpressionSyntax node)
|
||||
{
|
||||
var @operator = cx.GetSymbolInfo(node);
|
||||
var method = @operator.Symbol as IMethodSymbol;
|
||||
|
||||
if (GetCallType(cx, node) == CallType.Dynamic)
|
||||
if (@operator.Symbol is IMethodSymbol method)
|
||||
{
|
||||
UserOperator.OperatorSymbol(method.Name, out string operatorName);
|
||||
cx.Emit(Tuples.dynamic_member_name(this, operatorName));
|
||||
return;
|
||||
}
|
||||
|
||||
if (method != null)
|
||||
var callType = GetCallType(cx, node);
|
||||
if (callType == CallType.Dynamic)
|
||||
{
|
||||
UserOperator.OperatorSymbol(method.Name, out string operatorName);
|
||||
cx.Emit(Tuples.dynamic_member_name(this, operatorName));
|
||||
return;
|
||||
}
|
||||
|
||||
cx.Emit(Tuples.expr_call(this, Method.Create(cx, method)));
|
||||
}
|
||||
}
|
||||
|
||||
public enum CallType
|
||||
@@ -148,12 +150,9 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
{
|
||||
var @operator = cx.GetSymbolInfo(node);
|
||||
|
||||
if (@operator.Symbol != null)
|
||||
if (@operator.Symbol is IMethodSymbol method)
|
||||
{
|
||||
var method = @operator.Symbol as IMethodSymbol;
|
||||
|
||||
var containingSymbol = method.ContainingSymbol as ITypeSymbol;
|
||||
if (containingSymbol != null && containingSymbol.TypeKind == Microsoft.CodeAnalysis.TypeKind.Dynamic)
|
||||
if (method.ContainingSymbol is ITypeSymbol containingSymbol && containingSymbol.TypeKind == Microsoft.CodeAnalysis.TypeKind.Dynamic)
|
||||
{
|
||||
return CallType.Dynamic;
|
||||
}
|
||||
|
||||
@@ -33,58 +33,37 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
/// <summary>
|
||||
/// Represents a chain of method calls (the operand being recursive).
|
||||
/// </summary>
|
||||
class ClauseCall
|
||||
abstract class Clause
|
||||
{
|
||||
public ClauseCall operand;
|
||||
public IMethodSymbol method;
|
||||
public readonly List<ExpressionSyntax> arguments = new List<ExpressionSyntax>();
|
||||
public SyntaxNode node;
|
||||
public ISymbol declaration;
|
||||
public SyntaxToken name;
|
||||
public ISymbol intoDeclaration;
|
||||
protected readonly IMethodSymbol method;
|
||||
protected readonly List<ExpressionSyntax> arguments = new List<ExpressionSyntax>();
|
||||
protected readonly SyntaxNode node;
|
||||
|
||||
protected Clause(IMethodSymbol method, SyntaxNode node)
|
||||
{
|
||||
this.method = method;
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
public ExpressionSyntax Expr => arguments.First();
|
||||
|
||||
public ClauseCall WithClause(IMethodSymbol newMethod, SyntaxNode newNode, SyntaxToken newName = default(SyntaxToken), ISymbol newDeclaration = null)
|
||||
{
|
||||
return new ClauseCall
|
||||
{
|
||||
operand = this,
|
||||
method = newMethod,
|
||||
node = newNode,
|
||||
name = newName,
|
||||
declaration = newDeclaration
|
||||
};
|
||||
}
|
||||
public CallClause WithCallClause(IMethodSymbol newMethod, SyntaxNode newNode) =>
|
||||
new CallClause(this, newMethod, newNode);
|
||||
|
||||
public ClauseCall AddArgument(ExpressionSyntax arg)
|
||||
public LetClause WithLetClause(IMethodSymbol newMethod, SyntaxNode newNode, ISymbol newDeclaration, SyntaxToken newName) =>
|
||||
new LetClause(this, newMethod, newNode, newDeclaration, newName);
|
||||
|
||||
public Clause AddArgument(ExpressionSyntax arg)
|
||||
{
|
||||
if (arg != null)
|
||||
arguments.Add(arg);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ClauseCall WithInto(ISymbol into)
|
||||
{
|
||||
intoDeclaration = into;
|
||||
return this;
|
||||
}
|
||||
|
||||
Expression DeclareRangeVariable(Context cx, IExpressionParentEntity parent, int child, bool getElement)
|
||||
{
|
||||
return DeclareRangeVariable(cx, parent, child, getElement, declaration);
|
||||
}
|
||||
|
||||
void DeclareIntoVariable(Context cx, IExpressionParentEntity parent, int intoChild, bool getElement)
|
||||
{
|
||||
if (intoDeclaration != null)
|
||||
DeclareRangeVariable(cx, parent, intoChild, getElement, intoDeclaration);
|
||||
}
|
||||
|
||||
Expression DeclareRangeVariable(Context cx, IExpressionParentEntity parent, int child, bool getElement, ISymbol variableSymbol)
|
||||
protected Expression DeclareRangeVariable(Context cx, IExpressionParentEntity parent, int child, bool getElement, ISymbol variableSymbol, SyntaxToken name)
|
||||
{
|
||||
var type = Type.Create(cx, cx.GetType(Expr));
|
||||
Semmle.Extraction.Entities.Location nameLoc;
|
||||
Extraction.Entities.Location nameLoc;
|
||||
|
||||
Type declType;
|
||||
if (getElement)
|
||||
@@ -115,7 +94,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
return decl;
|
||||
}
|
||||
|
||||
void PopulateArguments(Context cx, QueryCall callExpr, int child)
|
||||
protected void PopulateArguments(Context cx, QueryCall callExpr, int child)
|
||||
{
|
||||
foreach (var e in arguments)
|
||||
{
|
||||
@@ -123,34 +102,79 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
}
|
||||
}
|
||||
|
||||
public Expression Populate(Context cx, IExpressionParentEntity parent, int child)
|
||||
{
|
||||
if (declaration != null) // The first "from" clause, or a "let" clause
|
||||
{
|
||||
if (operand == null)
|
||||
{
|
||||
return DeclareRangeVariable(cx, parent, child, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (method == null)
|
||||
cx.ModelError(node, "Unable to determine target of query expression");
|
||||
public abstract Expression Populate(Context cx, IExpressionParentEntity parent, int child);
|
||||
}
|
||||
|
||||
var callExpr = new QueryCall(cx, method, node, parent, child);
|
||||
operand.Populate(cx, callExpr, 0);
|
||||
DeclareRangeVariable(cx, callExpr, 1, false);
|
||||
PopulateArguments(cx, callExpr, 2);
|
||||
DeclareIntoVariable(cx, callExpr, 2 + arguments.Count, false);
|
||||
return callExpr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var callExpr = new QueryCall(cx, method, node, parent, child);
|
||||
operand.Populate(cx, callExpr, 0);
|
||||
PopulateArguments(cx, callExpr, 1);
|
||||
return callExpr;
|
||||
}
|
||||
class RangeClause : Clause
|
||||
{
|
||||
readonly ISymbol declaration;
|
||||
readonly SyntaxToken name;
|
||||
|
||||
public RangeClause(IMethodSymbol method, SyntaxNode node, ISymbol declaration, SyntaxToken name) : base(method, node)
|
||||
{
|
||||
this.declaration = declaration;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public override Expression Populate(Context cx, IExpressionParentEntity parent, int child) =>
|
||||
DeclareRangeVariable(cx, parent, child, true, declaration, name);
|
||||
}
|
||||
|
||||
class LetClause : Clause
|
||||
{
|
||||
readonly Clause operand;
|
||||
readonly ISymbol declaration;
|
||||
readonly SyntaxToken name;
|
||||
ISymbol intoDeclaration;
|
||||
|
||||
public LetClause(Clause operand, IMethodSymbol method, SyntaxNode node, ISymbol declaration, SyntaxToken name) : base(method, node)
|
||||
{
|
||||
this.operand = operand;
|
||||
this.declaration = declaration;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Clause WithInto(ISymbol into)
|
||||
{
|
||||
intoDeclaration = into;
|
||||
return this;
|
||||
}
|
||||
|
||||
void DeclareIntoVariable(Context cx, IExpressionParentEntity parent, int intoChild, bool getElement)
|
||||
{
|
||||
if (intoDeclaration != null)
|
||||
DeclareRangeVariable(cx, parent, intoChild, getElement, intoDeclaration, name);
|
||||
}
|
||||
|
||||
public override Expression Populate(Context cx, IExpressionParentEntity parent, int child)
|
||||
{
|
||||
if (method == null)
|
||||
cx.ModelError(node, "Unable to determine target of query expression");
|
||||
|
||||
var callExpr = new QueryCall(cx, method, node, parent, child);
|
||||
operand.Populate(cx, callExpr, 0);
|
||||
DeclareRangeVariable(cx, callExpr, 1, false, declaration, name);
|
||||
PopulateArguments(cx, callExpr, 2);
|
||||
DeclareIntoVariable(cx, callExpr, 2 + arguments.Count, false);
|
||||
return callExpr;
|
||||
}
|
||||
}
|
||||
|
||||
class CallClause : Clause
|
||||
{
|
||||
readonly Clause operand;
|
||||
|
||||
public CallClause(Clause operand, IMethodSymbol method, SyntaxNode node) : base(method, node)
|
||||
{
|
||||
this.operand = operand;
|
||||
}
|
||||
|
||||
public override Expression Populate(Context cx, IExpressionParentEntity parent, int child)
|
||||
{
|
||||
var callExpr = new QueryCall(cx, method, node, parent, child);
|
||||
operand.Populate(cx, callExpr, 0);
|
||||
PopulateArguments(cx, callExpr, 1);
|
||||
return callExpr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,18 +185,12 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
/// <param name="cx">The extraction context.</param>
|
||||
/// <param name="node">The query expression.</param>
|
||||
/// <returns>A "syntax tree" of the query.</returns>
|
||||
static ClauseCall ConstructQueryExpression(Context cx, QueryExpressionSyntax node)
|
||||
static Clause ConstructQueryExpression(Context cx, QueryExpressionSyntax node)
|
||||
{
|
||||
var info = cx.Model(node).GetQueryClauseInfo(node.FromClause);
|
||||
var method = info.OperationInfo.Symbol as IMethodSymbol;
|
||||
|
||||
ClauseCall clauseExpr = new ClauseCall
|
||||
{
|
||||
declaration = cx.Model(node).GetDeclaredSymbol(node.FromClause),
|
||||
name = node.FromClause.Identifier,
|
||||
method = method,
|
||||
node = node.FromClause
|
||||
}.AddArgument(node.FromClause.Expression);
|
||||
Clause clauseExpr = new RangeClause(method, node.FromClause, cx.Model(node).GetDeclaredSymbol(node.FromClause), node.FromClause.Identifier).AddArgument(node.FromClause.Expression);
|
||||
|
||||
foreach (var qc in node.Body.Clauses)
|
||||
{
|
||||
@@ -188,7 +206,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
{
|
||||
method = cx.Model(node).GetSymbolInfo(ordering).Symbol as IMethodSymbol;
|
||||
|
||||
clauseExpr = clauseExpr.WithClause(method, orderByClause).AddArgument(ordering.Expression);
|
||||
clauseExpr = clauseExpr.WithCallClause(method, orderByClause).AddArgument(ordering.Expression);
|
||||
|
||||
if (method == null)
|
||||
cx.ModelError(ordering, "Could not determine method call for orderby clause");
|
||||
@@ -196,23 +214,23 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
break;
|
||||
case SyntaxKind.WhereClause:
|
||||
var whereClause = (WhereClauseSyntax)qc;
|
||||
clauseExpr = clauseExpr.WithClause(method, whereClause).AddArgument(whereClause.Condition);
|
||||
clauseExpr = clauseExpr.WithCallClause(method, whereClause).AddArgument(whereClause.Condition);
|
||||
break;
|
||||
case SyntaxKind.FromClause:
|
||||
var fromClause = (FromClauseSyntax)qc;
|
||||
clauseExpr = clauseExpr.
|
||||
WithClause(method, fromClause, fromClause.Identifier, cx.Model(node).GetDeclaredSymbol(fromClause)).
|
||||
WithLetClause(method, fromClause, cx.Model(node).GetDeclaredSymbol(fromClause), fromClause.Identifier).
|
||||
AddArgument(fromClause.Expression);
|
||||
break;
|
||||
case SyntaxKind.LetClause:
|
||||
var letClause = (LetClauseSyntax)qc;
|
||||
clauseExpr = clauseExpr.WithClause(method, letClause, letClause.Identifier, cx.Model(node).GetDeclaredSymbol(letClause)).
|
||||
clauseExpr = clauseExpr.WithLetClause(method, letClause, cx.Model(node).GetDeclaredSymbol(letClause), letClause.Identifier).
|
||||
AddArgument(letClause.Expression);
|
||||
break;
|
||||
case SyntaxKind.JoinClause:
|
||||
var joinClause = (JoinClauseSyntax)qc;
|
||||
|
||||
clauseExpr = clauseExpr.WithClause(method, joinClause, joinClause.Identifier, cx.Model(node).GetDeclaredSymbol(joinClause)).
|
||||
clauseExpr = clauseExpr.WithLetClause(method, joinClause, cx.Model(node).GetDeclaredSymbol(joinClause), joinClause.Identifier).
|
||||
AddArgument(joinClause.InExpression).
|
||||
AddArgument(joinClause.LeftExpression).
|
||||
AddArgument(joinClause.RightExpression);
|
||||
@@ -220,7 +238,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
if (joinClause.Into != null)
|
||||
{
|
||||
var into = cx.Model(node).GetDeclaredSymbol(joinClause.Into);
|
||||
clauseExpr.WithInto(into);
|
||||
((LetClause)clauseExpr).WithInto(into);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -231,16 +249,13 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
|
||||
method = cx.Model(node).GetSymbolInfo(node.Body.SelectOrGroup).Symbol as IMethodSymbol;
|
||||
|
||||
var selectClause = node.Body.SelectOrGroup as SelectClauseSyntax;
|
||||
var groupClause = node.Body.SelectOrGroup as GroupClauseSyntax;
|
||||
clauseExpr = new CallClause(clauseExpr, method, node.Body.SelectOrGroup);
|
||||
|
||||
clauseExpr = new ClauseCall { operand = clauseExpr, method = method, node = node.Body.SelectOrGroup };
|
||||
|
||||
if (selectClause != null)
|
||||
if (node.Body.SelectOrGroup is SelectClauseSyntax selectClause)
|
||||
{
|
||||
clauseExpr.AddArgument(selectClause.Expression);
|
||||
}
|
||||
else if (groupClause != null)
|
||||
else if (node.Body.SelectOrGroup is GroupClauseSyntax groupClause)
|
||||
{
|
||||
clauseExpr.
|
||||
AddArgument(groupClause.GroupExpression).
|
||||
|
||||
@@ -28,7 +28,10 @@ namespace Semmle.Extraction.CSharp.Entities.Statements
|
||||
Expression.Create(cx, init, this, child--);
|
||||
}
|
||||
|
||||
Statement.Create(cx, Stmt.Statement, this, 1 + Stmt.Incrementors.Count);
|
||||
if (Stmt.Condition != null)
|
||||
{
|
||||
Expression.Create(cx, Stmt.Condition, this, 0);
|
||||
}
|
||||
|
||||
child = 1;
|
||||
foreach (var inc in Stmt.Incrementors)
|
||||
@@ -36,10 +39,7 @@ namespace Semmle.Extraction.CSharp.Entities.Statements
|
||||
Expression.Create(cx, inc, this, child++);
|
||||
}
|
||||
|
||||
if (Stmt.Condition != null)
|
||||
{
|
||||
Expression.Create(cx, Stmt.Condition, this, 0);
|
||||
}
|
||||
Statement.Create(cx, Stmt.Statement, this, 1 + Stmt.Incrementors.Count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ namespace Semmle.Extraction
|
||||
public static string NestPaths(ILogger logger, string outerpath, string innerpath, InnerPathComputation innerPathComputation)
|
||||
{
|
||||
string nested = innerpath;
|
||||
if (outerpath != null || outerpath.Length != 0)
|
||||
if (!string.IsNullOrEmpty(outerpath))
|
||||
{
|
||||
if (!Path.IsPathRooted(innerpath) && innerPathComputation == InnerPathComputation.ABSOLUTE)
|
||||
innerpath = Path.GetFullPath(innerpath);
|
||||
|
||||
@@ -20,10 +20,10 @@ import semmle.code.csharp.commons.ComparisonTest
|
||||
class IndexGuard extends ComparisonTest {
|
||||
VariableAccess indexAccess;
|
||||
Variable array;
|
||||
|
||||
|
||||
IndexGuard() {
|
||||
this.getFirstArgument() = indexAccess and
|
||||
this.getSecondArgument() = any(PropertyAccess lengthAccess |
|
||||
this.getSecondArgument() = any(PropertyAccess lengthAccess |
|
||||
lengthAccess.getQualifier() = array.getAnAccess() and
|
||||
lengthAccess.getTarget().hasName("Length")
|
||||
)
|
||||
@@ -50,7 +50,7 @@ from IndexGuard incorrectGuard, Variable array, Variable index, ElementAccess ea
|
||||
where
|
||||
// Look for `index <= array.Length` or `array.Length >= index`
|
||||
incorrectGuard.controls(array, index) and
|
||||
incorrectGuard.isIncorrect() and
|
||||
incorrectGuard.isIncorrect() and
|
||||
// Look for `array[index]`
|
||||
ea.getQualifier() = array.getAnAccess() and
|
||||
ea.getIndex(0) = indexAccess and
|
||||
|
||||
@@ -19,7 +19,7 @@ from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode
|
||||
where
|
||||
c.hasFlowPath(source, sink) and
|
||||
// No global timeout set
|
||||
not exists(RegexGlobalTimeout r) and
|
||||
not exists(RegexGlobalTimeout r) and
|
||||
(
|
||||
sink.getNode() instanceof Sink
|
||||
or
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Provides a list of NuGet packages with known vulnerabilities.
|
||||
*
|
||||
*
|
||||
* To add a new vulnerability follow the existing pattern.
|
||||
* Create a new class that extends the abstract class `Vulnerability`,
|
||||
* supplying the name and the URL, and override one (or both) of
|
||||
@@ -73,9 +73,9 @@ class MicrosoftAdvisory4021279 extends Vulnerability {
|
||||
|
||||
class CVE_2017_8700 extends Vulnerability {
|
||||
CVE_2017_8700() { this = "CVE-2017-8700" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/aspnet/Announcements/issues/279" }
|
||||
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
(
|
||||
name = "Microsoft.AspNetCore.Mvc.Core"
|
||||
@@ -91,9 +91,9 @@ class CVE_2017_8700 extends Vulnerability {
|
||||
|
||||
class CVE_2018_0765 extends Vulnerability {
|
||||
CVE_2018_0765() { this = "CVE-2018-0765" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/dotnet/announcements/issues/67" }
|
||||
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
name = "System.Security.Cryptography.Xml" and
|
||||
affected = "0.0.0" and
|
||||
@@ -103,7 +103,7 @@ class CVE_2018_0765 extends Vulnerability {
|
||||
|
||||
class AspNetCore_Mar18 extends Vulnerability {
|
||||
AspNetCore_Mar18() { this = "ASPNETCore-Mar18" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/aspnet/Announcements/issues/300" }
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
@@ -125,9 +125,9 @@ class AspNetCore_Mar18 extends Vulnerability {
|
||||
|
||||
class CVE_2018_8409 extends Vulnerability {
|
||||
CVE_2018_8409() { this = "CVE-2018-8409" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/aspnet/Announcements/issues/316" }
|
||||
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
name = "System.IO.Pipelines" and affected = "4.5.0" and fixed = "4.5.1"
|
||||
or
|
||||
@@ -138,9 +138,9 @@ class CVE_2018_8409 extends Vulnerability {
|
||||
|
||||
class CVE_2018_8171 extends Vulnerability {
|
||||
CVE_2018_8171() { this = "CVE-2018-8171" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/aspnet/Announcements/issues/310" }
|
||||
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
name = "Microsoft.AspNetCore.Identity" and (
|
||||
affected = "1.0.0" and fixed = "1.0.6"
|
||||
@@ -204,7 +204,7 @@ class CVE_2018_8356 extends Vulnerability {
|
||||
|
||||
class ASPNETCore_Jul18 extends Vulnerability {
|
||||
ASPNETCore_Jul18() { this = "ASPNETCore-July18" }
|
||||
|
||||
|
||||
override string getUrl() { result = "https://github.com/aspnet/Announcements/issues/311" }
|
||||
|
||||
override predicate matchesRange(string name, Version affected, Version fixed) {
|
||||
|
||||
@@ -113,49 +113,6 @@ class AssignableRead extends AssignableAccess {
|
||||
AssignableRead getAReachableRead() {
|
||||
result = this.getANextRead+()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a next uncertain read of the same underlying assignable. That is,
|
||||
* a read that can be reached from this read without passing through any other
|
||||
* reads, and which *may* read the same value. Example:
|
||||
*
|
||||
* ```
|
||||
* int Field;
|
||||
*
|
||||
* void SetField(int i) {
|
||||
* this.Field = i;
|
||||
* Use(this.Field);
|
||||
* if (i > 0)
|
||||
* this.Field = i - 1;
|
||||
* else if (i < 0)
|
||||
* SetField(1);
|
||||
* Use(this.Field);
|
||||
* Use(this.Field);
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* - The read of `i` on line 6 is next to the read on line 4.
|
||||
* - The reads of `i` on lines 7 and 8 are next to the read on line 6.
|
||||
* - The read of `this.Field` on line 10 is next to the read on line 5.
|
||||
* (This is the only truly uncertain read.)
|
||||
* - The read of `this.Field` on line 11 is next to the read on line 10.
|
||||
*/
|
||||
deprecated
|
||||
AssignableRead getANextUncertainRead() {
|
||||
Ssa::Internal::adjacentReadPair(this, result)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a next uncertain read of the same underlying assignable. That is,
|
||||
* a read that can be reached from this read, and which *may* read the same
|
||||
* value.
|
||||
*
|
||||
* This is the transitive closure of `getANextUncertainRead()`.
|
||||
*/
|
||||
deprecated
|
||||
AssignableRead getAReachableUncertainRead() {
|
||||
result = this.getANextUncertainRead+()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -490,10 +447,6 @@ class AssignableDefinition extends TAssignableDefinition {
|
||||
*/
|
||||
Element getElement() { result = this.getExpr() }
|
||||
|
||||
/** DEPRECATED: Use `getAControlFlowNode()` instead. */
|
||||
deprecated
|
||||
ControlFlow::Node getControlFlowNode() { result = this.getAControlFlowNode() }
|
||||
|
||||
/** Gets the enclosing callable of this definition. */
|
||||
Callable getEnclosingCallable() { result = this.getExpr().getEnclosingCallable() }
|
||||
|
||||
@@ -566,56 +519,6 @@ class AssignableDefinition extends TAssignableDefinition {
|
||||
result = this.getAFirstRead().getANextRead*()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a first uncertain read of the same underlying assignable. That is,
|
||||
* a read that can be reached from this definition without passing through any
|
||||
* other reads, and which *may* read the value assigned in this definition.
|
||||
* Example:
|
||||
*
|
||||
* ```
|
||||
* int Field;
|
||||
*
|
||||
* void SetField(int i) {
|
||||
* this.Field = i;
|
||||
* Use(this.Field);
|
||||
* if (i > 0)
|
||||
* this.Field = i - 1;
|
||||
* else if (i < 0)
|
||||
* SetField(1);
|
||||
* Use(this.Field);
|
||||
* Use(this.Field);
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* - The read of `i` on line 4 is a first read of the implicit parameter definition
|
||||
* on line 3.
|
||||
* - The read of `this.Field` on line 5 is a first read of the definition on line 4.
|
||||
* - The read of `this.Field` on line 10 is a first read of the definition on
|
||||
* line 7. (This is the only truly uncertain read.)
|
||||
*
|
||||
* Subsequent uncertain reads can be found by following the steps defined by
|
||||
* `AssignableRead.getANextUncertainRead()`.
|
||||
*/
|
||||
deprecated
|
||||
AssignableRead getAFirstUncertainRead() {
|
||||
exists(Ssa::ExplicitDefinition def |
|
||||
def.getADefinition() = this |
|
||||
result = def.getAFirstUncertainRead()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a reachable uncertain read of the same underlying assignable. That is,
|
||||
* a read that can be reached from this definition, and which *may* read the
|
||||
* value assigned in this definition.
|
||||
*
|
||||
* This is the equivalent with `getAFirstUncertainRead().getANextUncertainRead*()`.
|
||||
*/
|
||||
deprecated
|
||||
AssignableRead getAReachableUncertainRead() {
|
||||
result = this.getAFirstUncertainRead().getANextUncertainRead*()
|
||||
}
|
||||
|
||||
/** Gets a textual representation of this assignable definition. */
|
||||
string toString() { none() }
|
||||
|
||||
|
||||
@@ -1190,22 +1190,6 @@ class UsingStmt extends Stmt, @using_stmt {
|
||||
/** Gets a local variable declaration of this `using` statement. */
|
||||
LocalVariableDeclExpr getAVariableDeclExpr() { result = this.getVariableDeclExpr(_) }
|
||||
|
||||
/** DEPRECATED: Use `getVariable(0)` instead. */
|
||||
deprecated
|
||||
LocalVariable getVariable() { result = getVariableDeclExpr().getVariable() }
|
||||
|
||||
/** DEPRECATED: Use `getAVariableDeclExpr()` instead. */
|
||||
deprecated
|
||||
LocalVariableDeclExpr getVariableDeclExpr() { result.getParent() = this }
|
||||
|
||||
/** DEPRECATED: Use `getAnExpr()` instead. */
|
||||
deprecated Expr getInitializer() {
|
||||
if exists(this.getVariableDeclExpr(0)) then
|
||||
result = this.getVariableDeclExpr(0).getInitializer()
|
||||
else
|
||||
result.getParent() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the expression directly used by this `using` statement, if any. For
|
||||
* example, `f` on line 2 in
|
||||
@@ -1389,14 +1373,6 @@ class FixedStmt extends Stmt, @fixed_stmt {
|
||||
/** Gets a local variable declaration of this `fixed` statement. */
|
||||
LocalVariableDeclExpr getAVariableDeclExpr() { result = this.getVariableDeclExpr(_) }
|
||||
|
||||
/** DEPRECATED: Use `getVariable(0)` instead. */
|
||||
deprecated
|
||||
LocalVariable getVariable() { result = getVariableDeclExpr().getVariable() }
|
||||
|
||||
/** DEPRECATED: Use `getVariableDeclExpr(0) instead. */
|
||||
deprecated
|
||||
LocalVariableDeclExpr getVariableDeclExpr() { result.getParent() = this }
|
||||
|
||||
/** Gets the body of this `fixed` statement. */
|
||||
Stmt getBody() { result.getParent() = this }
|
||||
|
||||
@@ -1441,10 +1417,6 @@ class LabeledStmt extends Stmt, @labeled_stmt {
|
||||
and result = this.getParent().getChild(i+1))
|
||||
}
|
||||
|
||||
/** DEPRECATED: Use `getStmt()` instead. */
|
||||
deprecated
|
||||
Stmt getReferredStatement() { result = this.getStmt() }
|
||||
|
||||
/** Gets the label of this statement. */
|
||||
string getLabel() { exprorstmt_name(this, result) }
|
||||
|
||||
|
||||
@@ -134,12 +134,6 @@ class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_
|
||||
result.hasName(name)
|
||||
}
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `hasMethod()` instead.
|
||||
*/
|
||||
deprecated
|
||||
predicate inheritsMethod(Method m) { this.hasMethod(m) }
|
||||
|
||||
/**
|
||||
* Holds if this type has method `m`, that is, either `m` is declared in this
|
||||
* type, or `m` is inherited by this type.
|
||||
@@ -164,14 +158,6 @@ class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_
|
||||
*/
|
||||
predicate hasMethod(Method m) { this.hasMember(m) }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `hasCallable()` instead.
|
||||
*/
|
||||
deprecated
|
||||
predicate inheritsCallable(Callable c) {
|
||||
this.hasCallable(c)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this type has callable `c`, that is, either `c` is declared in this
|
||||
* type, or `c` is inherited by this type.
|
||||
@@ -202,14 +188,6 @@ class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_
|
||||
hasMember(c.(Accessor).getDeclaration())
|
||||
}
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `hasMember()` instead.
|
||||
*/
|
||||
deprecated
|
||||
predicate inheritsMember(Member m) {
|
||||
this.hasMember(m)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this type has member `m`, that is, either `m` is declared in this
|
||||
* type, or `m` is inherited by this type.
|
||||
|
||||
@@ -78,19 +78,6 @@ class XMLParent extends @xmlparent {
|
||||
result = count(int pos | xmlChars(_,_,this,pos,_,_))
|
||||
}
|
||||
|
||||
/**
|
||||
* DEPRECATED: Internal.
|
||||
*
|
||||
* Append the character sequences of this XML parent from left to right, separated by a space,
|
||||
* up to a specified (zero-based) index.
|
||||
*/
|
||||
deprecated
|
||||
string charsSetUpTo(int n) {
|
||||
(n = 0 and xmlChars(_,result,this,0,_,_)) or
|
||||
(n > 0 and exists(string chars | xmlChars(_,chars,this,n,_,_) |
|
||||
result = this.charsSetUpTo(n-1) + " " + chars))
|
||||
}
|
||||
|
||||
/** Append all the character sequences of this XML parent from left to right, separated by a space. */
|
||||
string allCharactersString() {
|
||||
result = concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos)
|
||||
|
||||
@@ -51,6 +51,9 @@ class Assertion extends MethodCall {
|
||||
|
||||
pragma[nomagic]
|
||||
private JoinBlockPredecessor getAPossiblyDominatedPredecessor(JoinBlock jb) {
|
||||
// Only calculate dominance by explicit recursion for split nodes;
|
||||
// all other nodes can use regular CFG dominance
|
||||
this instanceof ControlFlow::Internal::SplitControlFlowElement and
|
||||
exists(BasicBlock bb |
|
||||
bb = this.getAControlFlowNode().getBasicBlock() |
|
||||
result = bb.getASuccessor*()
|
||||
@@ -70,6 +73,22 @@ class Assertion extends MethodCall {
|
||||
)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate strictlyDominatesSplit(BasicBlock bb) {
|
||||
this.getAControlFlowNode().getBasicBlock().immediatelyDominates(bb)
|
||||
or
|
||||
if bb instanceof JoinBlock then
|
||||
this.isPossiblyDominatedJoinBlock(bb) and
|
||||
forall(BasicBlock pred |
|
||||
pred = this.getAPossiblyDominatedPredecessor(bb) |
|
||||
this.strictlyDominatesSplit(pred)
|
||||
or
|
||||
this.getAControlFlowNode().getBasicBlock() = pred
|
||||
)
|
||||
else
|
||||
this.strictlyDominatesSplit(bb.getAPredecessor())
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this assertion strictly dominates basic block `bb`. That is, `bb`
|
||||
* can only be reached from the callable entry point by going via *some* basic
|
||||
@@ -81,18 +100,9 @@ class Assertion extends MethodCall {
|
||||
*/
|
||||
pragma[nomagic]
|
||||
predicate strictlyDominates(BasicBlock bb) {
|
||||
this.getAControlFlowNode().getBasicBlock().immediatelyDominates(bb)
|
||||
this.strictlyDominatesSplit(bb)
|
||||
or
|
||||
if bb instanceof JoinBlock then
|
||||
this.isPossiblyDominatedJoinBlock(bb) and
|
||||
forall(BasicBlock pred |
|
||||
pred = this.getAPossiblyDominatedPredecessor(bb) |
|
||||
this.strictlyDominates(pred)
|
||||
or
|
||||
this.getAControlFlowNode().getBasicBlock() = pred
|
||||
)
|
||||
else
|
||||
this.strictlyDominates(bb.getAPredecessor())
|
||||
this.getAControlFlowNode().getBasicBlock().strictlyDominates(bb)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -473,6 +473,7 @@ class ConditionBlock extends BasicBlock {
|
||||
* successor of this block, and `succ` can only be reached from
|
||||
* the callable entry point by going via the `s` edge out of this basic block.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) {
|
||||
succ = this.getASuccessorByType(s) and
|
||||
forall(BasicBlock pred |
|
||||
|
||||
@@ -79,12 +79,23 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element {
|
||||
* `pred` ending with this element, and `pred` is an immediate predecessor
|
||||
* of `succ`.
|
||||
*
|
||||
* This predicate is different from
|
||||
* `this.getAControlFlowNode().getBasicBlock().(ConditionBlock).immediatelyControls(succ, s)`
|
||||
* in that it takes control flow splitting into account.
|
||||
* Moreover, this control flow element corresponds to multiple control flow nodes,
|
||||
* which is why
|
||||
*
|
||||
* ```
|
||||
* exists(ConditionBlock cb |
|
||||
* cb.getLastNode() = this.getAControlFlowNode() |
|
||||
* cb.immediatelyControls(succ, s)
|
||||
* )
|
||||
* ```
|
||||
*
|
||||
* does not work.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
private predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) {
|
||||
private predicate immediatelyControlsBlockSplit(BasicBlock succ, ConditionalSuccessor s) {
|
||||
// Only calculate dominance by explicit recursion for split nodes;
|
||||
// all other nodes can use regular CFG dominance
|
||||
this instanceof ControlFlow::Internal::SplitControlFlowElement and
|
||||
exists(ConditionBlock cb |
|
||||
cb.getLastNode() = this.getAControlFlowNode() |
|
||||
succ = cb.getASuccessorByType(s) and
|
||||
@@ -103,7 +114,7 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element {
|
||||
pragma[nomagic]
|
||||
private JoinBlockPredecessor getAPossiblyControlledPredecessor(JoinBlock controlled, ConditionalSuccessor s) {
|
||||
exists(BasicBlock mid |
|
||||
this.immediatelyControls(mid, s) |
|
||||
this.immediatelyControlsBlockSplit(mid, s) |
|
||||
result = mid.getASuccessor*()
|
||||
) and
|
||||
result.getASuccessor() = controlled and
|
||||
@@ -121,19 +132,9 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if basic block `controlled` is controlled by this control flow element
|
||||
* with conditional value `s`. That is, `controlled` can only be reached from
|
||||
* the callable entry point by going via the `s` edge out of *some* basic block
|
||||
* ending with this element.
|
||||
*
|
||||
* This predicate is different from
|
||||
* `this.getAControlFlowNode().getBasicBlock().(ConditionBlock).controls(controlled, s)`
|
||||
* in that it takes control flow splitting into account.
|
||||
*/
|
||||
cached
|
||||
predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s) {
|
||||
this.immediatelyControls(controlled, s)
|
||||
private predicate controlsBlockSplit(BasicBlock controlled, ConditionalSuccessor s) {
|
||||
this.immediatelyControlsBlockSplit(controlled, s)
|
||||
or
|
||||
if controlled instanceof JoinBlock then
|
||||
this.isPossiblyControlledJoinBlock(controlled, s) and
|
||||
@@ -142,7 +143,33 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element {
|
||||
this.controlsBlock(pred, s)
|
||||
)
|
||||
else
|
||||
this.controlsBlock(controlled.getAPredecessor(), s)
|
||||
this.controlsBlockSplit(controlled.getAPredecessor(), s)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if basic block `controlled` is controlled by this control flow element
|
||||
* with conditional value `s`. That is, `controlled` can only be reached from
|
||||
* the callable entry point by going via the `s` edge out of *some* basic block
|
||||
* ending with this element.
|
||||
*
|
||||
* This predicate is different from
|
||||
*
|
||||
* ```
|
||||
* exists(ConditionBlock cb |
|
||||
* cb.getLastNode() = this.getAControlFlowNode() |
|
||||
* cb.controls(controlled, s)
|
||||
* )
|
||||
* ```
|
||||
*
|
||||
* as control flow splitting is taken into account.
|
||||
*/
|
||||
predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s) {
|
||||
this.controlsBlockSplit(controlled, s)
|
||||
or
|
||||
exists(ConditionBlock cb |
|
||||
cb.getLastNode() = this.getAControlFlowNode() |
|
||||
cb.controls(controlled, s)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,8 +178,15 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element {
|
||||
* from the callable entry point by going via the `s` edge out of this element.
|
||||
*
|
||||
* This predicate is different from
|
||||
* `this.getAControlFlowNode().getBasicBlock().(ConditionBlock).controls(controlled.getAControlFlowNode().getBasicBlock(), s)`
|
||||
* in that it takes control flow splitting into account.
|
||||
*
|
||||
* ```
|
||||
* exists(ConditionBlock cb |
|
||||
* cb.getLastNode() = this.getAControlFlowNode() |
|
||||
* cb.controls(controlled.getAControlFlowNode().getBasicBlock(), s)
|
||||
* )
|
||||
* ```
|
||||
*
|
||||
* as control flow splitting is taken into account.
|
||||
*/
|
||||
pragma[inline] // potentially very large predicate, so must be inlined
|
||||
predicate controlsElement(ControlFlowElement controlled, ConditionalSuccessor s) {
|
||||
|
||||
@@ -4198,6 +4198,13 @@ module ControlFlow {
|
||||
}
|
||||
}
|
||||
import Cached
|
||||
|
||||
/** A control flow element that is split into multiple control flow nodes. */
|
||||
class SplitControlFlowElement extends ControlFlowElement {
|
||||
SplitControlFlowElement() {
|
||||
strictcount(this.getAControlFlowNode()) > 1
|
||||
}
|
||||
}
|
||||
}
|
||||
private import Internal
|
||||
}
|
||||
|
||||
@@ -286,7 +286,7 @@ class DereferenceableExpr extends Expr {
|
||||
ie = any(IsTypeExpr ite | ite.getCheckedType() = ite.getExpr().getType()) and
|
||||
branch = false and
|
||||
isNull = true
|
||||
)
|
||||
)
|
||||
)
|
||||
or
|
||||
this.hasNullableType() and
|
||||
@@ -1217,7 +1217,7 @@ module Internal {
|
||||
g1 = cond and
|
||||
v1 = v.getDualValue() and
|
||||
(
|
||||
// g1 === g2 ? e : ...;
|
||||
// g1 === g2 ? e : ...;
|
||||
g2 = cond.getCondition() and
|
||||
v2 = TBooleanValue(branch.booleanNot())
|
||||
or
|
||||
|
||||
@@ -28,6 +28,7 @@ module DataFlow {
|
||||
DotNet::Type getType() { none() }
|
||||
|
||||
/** Gets the enclosing callable of this node. */
|
||||
cached
|
||||
DotNet::Callable getEnclosingCallable() { none() }
|
||||
|
||||
/** Gets a textual representation of this node. */
|
||||
@@ -52,9 +53,19 @@ module DataFlow {
|
||||
|
||||
override DotNet::Callable getEnclosingCallable() { result = expr.getEnclosingCallable() }
|
||||
|
||||
override string toString() { result = expr.toString() }
|
||||
override string toString() {
|
||||
result = expr.(Expr).toString()
|
||||
or
|
||||
expr instanceof CIL::Expr and
|
||||
result = "CIL expression"
|
||||
}
|
||||
|
||||
override Location getLocation() { result = expr.getLocation() }
|
||||
override Location getLocation() {
|
||||
result = expr.(Expr).getLocation()
|
||||
or
|
||||
result.getFile().isPdbSourceFile() and
|
||||
result = expr.(CIL::Expr).getALocation()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,7 +101,7 @@ module DataFlow {
|
||||
localFlowStep*(source, sink)
|
||||
}
|
||||
|
||||
predicate localFlowStep = localFlowStepCached/2;
|
||||
predicate localFlowStep = Internal::LocalFlow::step/2;
|
||||
|
||||
/**
|
||||
* A data flow node augmented with a call context and a configuration. Only
|
||||
@@ -690,12 +701,14 @@ module DataFlow {
|
||||
/**
|
||||
* Provides predicates related to local data flow.
|
||||
*/
|
||||
private module LocalFlow {
|
||||
module LocalFlow {
|
||||
/**
|
||||
* Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local
|
||||
* (intra-procedural) step.
|
||||
*/
|
||||
predicate localFlowStepNonCached(Node nodeFrom, Node nodeTo) {
|
||||
cached
|
||||
predicate step(Node nodeFrom, Node nodeTo) {
|
||||
forceCachingInSameStage() and
|
||||
localFlowStepExpr(nodeFrom.asExpr(), nodeTo.asExpr())
|
||||
or
|
||||
// Flow from source to SSA definition
|
||||
@@ -1119,6 +1132,8 @@ module DataFlow {
|
||||
* same stage.
|
||||
*/
|
||||
cached module Cached {
|
||||
cached predicate forceCachingInSameStage() { any() }
|
||||
|
||||
cached newtype TNode =
|
||||
TExprNode(DotNet::Expr e)
|
||||
or
|
||||
@@ -1137,14 +1152,6 @@ module DataFlow {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local
|
||||
* (intra-procedural) step.
|
||||
*/
|
||||
cached predicate localFlowStepCached(Node nodeFrom, Node nodeTo) {
|
||||
LocalFlow::localFlowStepNonCached(nodeFrom, nodeTo)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `pred` can flow to `succ`, by jumping from one callable to
|
||||
* another.
|
||||
|
||||
@@ -758,42 +758,6 @@ module Ssa {
|
||||
ssaRefRank(bb2, i2, v, _) = 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if the value defined at non-trivial SSA definition `def` can reach `read`
|
||||
* without passing through any other read, but possibly through pseudo definitions
|
||||
* and uncertain definitions.
|
||||
*/
|
||||
deprecated
|
||||
predicate firstUncertainRead(TrackedDefinition def, AssignableRead read) {
|
||||
firstReadSameVar(def, read)
|
||||
or
|
||||
exists(TrackedVar v, TrackedDefinition redef, BasicBlock b1, int i1, BasicBlock b2, int i2 |
|
||||
redef instanceof UncertainDefinition or redef instanceof PseudoDefinition
|
||||
|
|
||||
adjacentVarRefs(v, b1, i1, b2, i2) and
|
||||
definesAt(def, b1, i1, v) and
|
||||
definesAt(redef, b2, i2, v) and
|
||||
firstUncertainRead(redef, read)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Use `AssignableRead.getANextUncertainRead()` instead.
|
||||
*/
|
||||
deprecated
|
||||
predicate adjacentReadPair(AssignableRead read1, AssignableRead read2) {
|
||||
adjacentReadPairSameVar(read1, read2)
|
||||
or
|
||||
exists(TrackedVar v, TrackedDefinition def, BasicBlock bb1, int i1, BasicBlock bb2, int i2 |
|
||||
adjacentVarRefs(v, bb1, i1, bb2, i2) and
|
||||
variableRead(bb1, i1, v, read1.getAControlFlowNode(), _) and
|
||||
definesAt(def, bb2, i2, v) and
|
||||
firstUncertainRead(def, read2) |
|
||||
def instanceof UncertainDefinition or
|
||||
def instanceof PseudoDefinition
|
||||
)
|
||||
}
|
||||
|
||||
private cached module Cached {
|
||||
/**
|
||||
* Holds if `read` is a last read of the non-trivial SSA definition `def`.
|
||||
@@ -2146,47 +2110,6 @@ module Ssa {
|
||||
lastRead(this, result)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a first uncertain read of the source variable underlying this
|
||||
* SSA definition. That is, a read that can be reached from this SSA definition
|
||||
* without passing through any other reads or SSA definitions, except for
|
||||
* phi nodes and uncertain updates. Example:
|
||||
*
|
||||
* ```
|
||||
* int Field;
|
||||
*
|
||||
* void SetField(int i) {
|
||||
* this.Field = i;
|
||||
* Use(this.Field);
|
||||
* if (i > 0)
|
||||
* this.Field = i - 1;
|
||||
* else if (i < 0)
|
||||
* SetField(1);
|
||||
* Use(this.Field);
|
||||
* Use(this.Field);
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* - The read of `i` on line 4 can be reached from the explicit SSA
|
||||
* definition (wrapping an implicit entry definition) on line 3.
|
||||
* - The reads of `i` on lines 6 and 7 are not the first reads of any SSA
|
||||
* definition.
|
||||
* - The read of `this.Field` on line 5 can be reached from the explicit SSA
|
||||
* definition on line 4.
|
||||
* - The read of `this.Field` on line 10 can be reached from the explicit SSA
|
||||
* definition on line 7, the implicit SSA definition on line 9, and the phi
|
||||
* node between lines 9 and 10.
|
||||
* - The read of `this.Field` on line 11 is not the first read of any SSA
|
||||
* definition.
|
||||
*
|
||||
* Subsequent uncertain reads can be found by following the steps defined by
|
||||
* `AssignableRead.getANextUncertainRead()`.
|
||||
*/
|
||||
deprecated
|
||||
AssignableRead getAFirstUncertainRead() {
|
||||
firstUncertainRead(this, result)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a definition that ultimately defines this SSA definition and is
|
||||
* not itself a pseudo node. Example:
|
||||
@@ -2478,10 +2401,6 @@ module Ssa {
|
||||
)
|
||||
}
|
||||
|
||||
override AssignableRead getAFirstUncertainRead() {
|
||||
result = this.getARead()
|
||||
}
|
||||
|
||||
override string toString() {
|
||||
result = getToStringPrefix(this) + "SSA untracked def(" + getSourceVariable() + ")"
|
||||
}
|
||||
|
||||
@@ -269,13 +269,6 @@ private module Internal {
|
||||
* types for a given expression.
|
||||
*/
|
||||
private module SimpleTypeDataFlow {
|
||||
// A temporary workaround to get the right join-order in `Sink::getASource()`
|
||||
private newtype ExprWrapper = TExprWrapper(Expr e)
|
||||
|
||||
private Expr unwrap(ExprWrapper ew) { ew = TExprWrapper(result) }
|
||||
|
||||
private ExprWrapper wrap(Expr e) { result = TExprWrapper(e) }
|
||||
|
||||
/**
|
||||
* Holds if type `t` may be imprecise, that is, an expression of type `t` may
|
||||
* in fact have a more precise type.
|
||||
@@ -321,34 +314,27 @@ private module Internal {
|
||||
typeMayBeImprecise(succ.getType())
|
||||
}
|
||||
|
||||
private predicate step(ExprWrapper succ, ExprWrapper pred) {
|
||||
stepExpr(unwrap(succ), unwrap(pred))
|
||||
}
|
||||
|
||||
private predicate isSink(ExprWrapper ew) {
|
||||
exists(Expr e |
|
||||
e = unwrap(ew) |
|
||||
e = any(DynamicMemberAccess dma | isSink(wrap(dma))).getQualifier() or
|
||||
e = any(AccessorCall ac).getAnArgument() or
|
||||
e = any(DispatchReflectionOrDynamicCall c).getArgument(_) or
|
||||
e = any(MethodCall mc | mc.getTarget() = any(SystemObjectClass c).getGetTypeMethod()).getQualifier() or
|
||||
e = any(DispatchCallImpl c).getQualifier()
|
||||
)
|
||||
}
|
||||
|
||||
private predicate stepTC(ExprWrapper succ, ExprWrapper pred) =
|
||||
boundedFastTC(step/2, isSink/1)(succ, pred)
|
||||
private predicate stepTC(Expr succ, Expr pred) =
|
||||
fastTC(stepExpr/2)(succ, pred)
|
||||
|
||||
private class Source extends Expr {
|
||||
Source() { not stepExpr(this, _) }
|
||||
}
|
||||
|
||||
private class Sink extends Expr {
|
||||
Sink() { isSink(wrap(this)) }
|
||||
|
||||
Source getASource() {
|
||||
stepTC(wrap(this), wrap(result))
|
||||
Sink() {
|
||||
this = any(DynamicMemberAccess dma | dma instanceof Sink).getQualifier()
|
||||
or
|
||||
this = any(AccessorCall ac).getAnArgument()
|
||||
or
|
||||
this = any(DispatchReflectionOrDynamicCall c).getArgument(_)
|
||||
or
|
||||
this = any(MethodCall mc | mc.getTarget() = any(SystemObjectClass c).getGetTypeMethod()).getQualifier()
|
||||
or
|
||||
this = any(DispatchCallImpl c).getQualifier()
|
||||
}
|
||||
|
||||
Source getASource() { stepTC(this, result) }
|
||||
}
|
||||
|
||||
/** Holds if the expression `e` has an exact type. */
|
||||
@@ -357,10 +343,7 @@ private module Internal {
|
||||
e instanceof BaseAccess
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a source type for expression `e`, using simple data flow. The
|
||||
* expression must be a member of the predicate `isSink()` above.
|
||||
*/
|
||||
/** Gets a source type for expression `e`, using simple data flow. */
|
||||
Type getASourceType(Sink e, boolean isExact) {
|
||||
exists(Source s |
|
||||
s = e.getASource() or
|
||||
|
||||
@@ -128,28 +128,6 @@ class MemberAccess extends Access, QualifiableExpr, @member_access_expr {
|
||||
class AssignableAccess extends Access, @assignable_access_expr {
|
||||
override Assignable getTarget() { none() }
|
||||
|
||||
/**
|
||||
* DEPRECATED: use the class `AssignableRead` instead.
|
||||
*/
|
||||
deprecated predicate isReadAccess() {
|
||||
this instanceof AssignableRead
|
||||
}
|
||||
|
||||
/**
|
||||
* DEPRECATED: use the class `AssignableWrite` instead.
|
||||
*/
|
||||
deprecated predicate isWriteAccess() {
|
||||
this instanceof AssignableWrite
|
||||
}
|
||||
|
||||
/**
|
||||
* DEPRECATED: use the classes `AssignableRead` and `AssignableWrite` instead.
|
||||
*/
|
||||
deprecated predicate isReadWriteAccess() {
|
||||
this instanceof AssignableRead and
|
||||
this instanceof AssignableWrite
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this access passes the assignable being accessed as an `out`
|
||||
* argument in a method call.
|
||||
@@ -207,16 +185,6 @@ class VariableRead extends VariableAccess, AssignableRead {
|
||||
override VariableRead getAReachableRead() {
|
||||
result = AssignableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override VariableRead getANextUncertainRead() {
|
||||
result = AssignableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override VariableRead getAReachableUncertainRead() {
|
||||
result = AssignableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -249,16 +217,6 @@ class LocalScopeVariableRead extends LocalScopeVariableAccess, VariableRead {
|
||||
override LocalScopeVariableRead getAReachableRead() {
|
||||
result = VariableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override LocalScopeVariableRead getANextUncertainRead() {
|
||||
result = VariableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override LocalScopeVariableRead getAReachableUncertainRead() {
|
||||
result = VariableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -305,16 +263,6 @@ class ParameterRead extends ParameterAccess, LocalScopeVariableRead {
|
||||
override ParameterRead getAReachableRead() {
|
||||
result = LocalScopeVariableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override ParameterRead getANextUncertainRead() {
|
||||
result = LocalScopeVariableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override ParameterRead getAReachableUncertainRead() {
|
||||
result = LocalScopeVariableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -372,16 +320,6 @@ class LocalVariableRead extends LocalVariableAccess, LocalScopeVariableRead {
|
||||
override LocalVariableRead getAReachableRead() {
|
||||
result = LocalScopeVariableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override LocalVariableRead getANextUncertainRead() {
|
||||
result = LocalScopeVariableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override LocalVariableRead getAReachableUncertainRead() {
|
||||
result = LocalScopeVariableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -526,16 +464,6 @@ class PropertyRead extends PropertyAccess, AssignableRead {
|
||||
override PropertyRead getAReachableRead() {
|
||||
result = AssignableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override PropertyRead getANextUncertainRead() {
|
||||
result = AssignableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override PropertyRead getAReachableUncertainRead() {
|
||||
result = AssignableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -685,16 +613,6 @@ class IndexerRead extends IndexerAccess, AssignableRead {
|
||||
override IndexerRead getAReachableRead() {
|
||||
result = AssignableRead.super.getAReachableRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override IndexerRead getANextUncertainRead() {
|
||||
result = AssignableRead.super.getANextUncertainRead()
|
||||
}
|
||||
|
||||
deprecated
|
||||
override IndexerRead getAReachableUncertainRead() {
|
||||
result = AssignableRead.super.getAReachableUncertainRead()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -275,39 +275,7 @@ class IsExpr extends Expr, @is_expr {
|
||||
*/
|
||||
Expr getExpr() { result = this.getChild(0) }
|
||||
|
||||
/**
|
||||
* Deprecated: Use `IsTypeExpr.getTypeAccess()` instead.
|
||||
* Gets the type access in this `is` expression, for example `string` in
|
||||
* `x is string`.
|
||||
*/
|
||||
deprecated
|
||||
TypeAccess getTypeAccess() { none() }
|
||||
|
||||
/**
|
||||
* Deprecated: Use `IsTypeExpr.getCheckedType()` instead.
|
||||
* Gets the type being accessed in this `is` expression, for example `string`
|
||||
* in `x is string`.
|
||||
*/
|
||||
deprecated
|
||||
Type getCheckedType() { none() }
|
||||
|
||||
override string toString() { result = "... is ..." }
|
||||
|
||||
/**
|
||||
* Deprecated: Use `IsPatternExpr.getVariableDeclExpr()` instead.
|
||||
* Gets the local variable declaration in an `is` pattern expression,
|
||||
* if any. For example `string s` in `x is string s`.
|
||||
*/
|
||||
deprecated
|
||||
LocalVariableDeclExpr getVariableDeclExpr() { none() }
|
||||
|
||||
/**
|
||||
* Deprecated: Use `instanceof IsPatternExpr` instead.
|
||||
* Holds if this `is` expression is an `is` pattern expression, for example
|
||||
* `x is string s`.
|
||||
*/
|
||||
deprecated
|
||||
predicate isPattern() { this instanceof IsPatternExpr }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,13 +290,13 @@ class IsTypeExpr extends IsExpr
|
||||
* Gets the type being accessed in this `is` expression, for example `string`
|
||||
* in `x is string`.
|
||||
*/
|
||||
override Type getCheckedType() { result = typeAccess.getTarget() }
|
||||
Type getCheckedType() { result = typeAccess.getTarget() }
|
||||
|
||||
/**
|
||||
* Gets the type access in this `is` expression, for example `string` in
|
||||
* `x is string`.
|
||||
*/
|
||||
override TypeAccess getTypeAccess() { result = typeAccess }
|
||||
TypeAccess getTypeAccess() { result = typeAccess }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,7 +311,7 @@ class IsPatternExpr extends IsTypeExpr
|
||||
* Gets the local variable declaration in this `is` pattern expression.
|
||||
* For example `string s` in `x is string s`.
|
||||
*/
|
||||
override LocalVariableDeclExpr getVariableDeclExpr() { result = typeDecl }
|
||||
LocalVariableDeclExpr getVariableDeclExpr() { result = typeDecl }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,7 +8,3 @@ class MicrosoftNamespace extends Namespace {
|
||||
this.hasName("Microsoft")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `Microsoft` namespace. */
|
||||
deprecated
|
||||
MicrosoftNamespace getMicrosoftNamespace() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System` namespace. */
|
||||
deprecated
|
||||
SystemNamespace getSystemNamespace() { any() }
|
||||
|
||||
/** A class in the `System` namespace. */
|
||||
class SystemClass extends Class {
|
||||
SystemClass() {
|
||||
@@ -63,10 +59,6 @@ class SystemActionDelegateType extends SystemDelegateType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Action` delegate type. */
|
||||
deprecated
|
||||
SystemActionDelegateType getSystemActionDelegateType() { any() }
|
||||
|
||||
/** The `System.Action<T1, ..., Tn>` delegate type. */
|
||||
class SystemActionTDelegateType extends SystemUnboundGenericDelegateType {
|
||||
SystemActionTDelegateType() {
|
||||
@@ -74,10 +66,6 @@ class SystemActionTDelegateType extends SystemUnboundGenericDelegateType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets a `System.Action<T1, ..., Tn>` delegate type. */
|
||||
deprecated
|
||||
SystemActionTDelegateType getSystemActionTDelegateType() { any() }
|
||||
|
||||
/** `System.Array` class. */
|
||||
class SystemArrayClass extends SystemClass {
|
||||
SystemArrayClass() {
|
||||
@@ -85,10 +73,6 @@ class SystemArrayClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Array` class. */
|
||||
deprecated
|
||||
SystemArrayClass getSystemArrayClass() { any() }
|
||||
|
||||
/** The `System.Boolean` structure. */
|
||||
class SystemBooleanStruct extends BoolType {
|
||||
/** Gets the `Parse(string)` method. */
|
||||
@@ -120,10 +104,6 @@ class SystemBooleanStruct extends BoolType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Boolean` structure. */
|
||||
deprecated
|
||||
SystemBooleanStruct getSystemBooleanStruct() { any() }
|
||||
|
||||
/** The `System.Convert` class. */
|
||||
class SystemConvertClass extends SystemClass {
|
||||
SystemConvertClass() {
|
||||
@@ -131,10 +111,6 @@ class SystemConvertClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Convert` class. */
|
||||
deprecated
|
||||
SystemConvertClass getSystemConvertClass() { any() }
|
||||
|
||||
/** `System.Delegate` class. */
|
||||
class SystemDelegateClass extends SystemClass {
|
||||
SystemDelegateClass() {
|
||||
@@ -142,10 +118,6 @@ class SystemDelegateClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Delegate` class. */
|
||||
deprecated
|
||||
SystemDelegateClass getSystemDelegateClass() { any() }
|
||||
|
||||
/** The `System.DivideByZeroException` class. */
|
||||
class SystemDivideByZeroExceptionClass extends SystemClass {
|
||||
SystemDivideByZeroExceptionClass() {
|
||||
@@ -153,10 +125,6 @@ class SystemDivideByZeroExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.DivideByZeroException` class. */
|
||||
deprecated
|
||||
SystemDivideByZeroExceptionClass getSystemDivideByZeroExceptionClass() { any() }
|
||||
|
||||
/** The `System.Enum` class. */
|
||||
class SystemEnumClass extends SystemClass {
|
||||
SystemEnumClass() {
|
||||
@@ -164,10 +132,6 @@ class SystemEnumClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Enum` class. */
|
||||
deprecated
|
||||
SystemEnumClass getSystemEnumClass() { any() }
|
||||
|
||||
/** The `System.Exception` class. */
|
||||
class SystemExceptionClass extends SystemClass {
|
||||
SystemExceptionClass() {
|
||||
@@ -175,10 +139,6 @@ class SystemExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Exception` class. */
|
||||
deprecated
|
||||
SystemExceptionClass getSystemExceptionClass() { any() }
|
||||
|
||||
/** The `System.Func<T1, ..., Tn, TResult>` delegate type. */
|
||||
class SystemFuncDelegateType extends SystemUnboundGenericDelegateType {
|
||||
SystemFuncDelegateType() {
|
||||
@@ -199,10 +159,6 @@ class SystemFuncDelegateType extends SystemUnboundGenericDelegateType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets a `System.Func<T1, ..., Tn, TResult>` delegate type. */
|
||||
deprecated
|
||||
SystemFuncDelegateType getSystemFuncDelegateType() { any() }
|
||||
|
||||
/** The `System.IComparable` interface. */
|
||||
class SystemIComparableInterface extends SystemInterface {
|
||||
SystemIComparableInterface() {
|
||||
@@ -223,10 +179,6 @@ class SystemIComparableInterface extends SystemInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IComparable` interface. */
|
||||
deprecated
|
||||
SystemIComparableInterface getSystemIComparableInterface() { any() }
|
||||
|
||||
/** The `System.IComparable<T>` interface. */
|
||||
class SystemIComparableTInterface extends SystemUnboundGenericInterface {
|
||||
SystemIComparableTInterface() {
|
||||
@@ -247,10 +199,6 @@ class SystemIComparableTInterface extends SystemUnboundGenericInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IComparable<T>` interface. */
|
||||
deprecated
|
||||
SystemIComparableTInterface getSystemIComparableTInterface() { any() }
|
||||
|
||||
/** The `System.IEquatable<T>` interface. */
|
||||
class SystemIEquatableTInterface extends SystemUnboundGenericInterface {
|
||||
SystemIEquatableTInterface() {
|
||||
@@ -271,10 +219,6 @@ class SystemIEquatableTInterface extends SystemUnboundGenericInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IEquatable<T>` interface. */
|
||||
deprecated
|
||||
SystemIEquatableTInterface getSystemIEquatableTInterface() { any() }
|
||||
|
||||
/** The `System.IFormatProvider` interface. */
|
||||
class SystemIFormatProviderInterface extends SystemInterface {
|
||||
SystemIFormatProviderInterface() {
|
||||
@@ -282,10 +226,6 @@ class SystemIFormatProviderInterface extends SystemInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IFormatProvider` interface. */
|
||||
deprecated
|
||||
SystemIFormatProviderInterface getSystemIFormatProviderInterface() { any() }
|
||||
|
||||
/** The `System.Int32` structure. */
|
||||
class SystemInt32Struct extends IntType {
|
||||
/** Gets the `Parse(string, ...)` method. */
|
||||
@@ -313,10 +253,6 @@ class SystemInt32Struct extends IntType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Int32` structure. */
|
||||
deprecated
|
||||
SystemInt32Struct getSystemInt32Struct() { any() }
|
||||
|
||||
/** The `System.InvalidCastException` class. */
|
||||
class SystemInvalidCastExceptionClass extends SystemClass {
|
||||
SystemInvalidCastExceptionClass() {
|
||||
@@ -324,10 +260,6 @@ class SystemInvalidCastExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.InvalidCastException` class. */
|
||||
deprecated
|
||||
SystemInvalidCastExceptionClass getSystemInvalidCastExceptionClass() { any() }
|
||||
|
||||
/** The `System.Lazy<T>` class. */
|
||||
class SystemLazyClass extends SystemUnboundGenericClass {
|
||||
SystemLazyClass() {
|
||||
@@ -346,10 +278,6 @@ class SystemLazyClass extends SystemUnboundGenericClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Lazy<T>` class. */
|
||||
deprecated
|
||||
SystemLazyClass getSystemLazyClass() { any() }
|
||||
|
||||
/** The `System.NullReferenceException` class. */
|
||||
class SystemNullReferenceExceptionClass extends SystemClass {
|
||||
SystemNullReferenceExceptionClass() {
|
||||
@@ -357,10 +285,6 @@ class SystemNullReferenceExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.NullReferenceException` class. */
|
||||
deprecated
|
||||
SystemNullReferenceExceptionClass getSystemNullReferenceExceptionClass() { any() }
|
||||
|
||||
/** The `System.Object` class. */
|
||||
class SystemObjectClass extends SystemClass {
|
||||
SystemObjectClass() {
|
||||
@@ -448,10 +372,6 @@ class SystemObjectClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Object` class. */
|
||||
deprecated
|
||||
SystemObjectClass getSystemObjectClass() { any() }
|
||||
|
||||
/** The `System.OutOfMemoryException` class. */
|
||||
class SystemOutOfMemoryExceptionClass extends SystemClass {
|
||||
SystemOutOfMemoryExceptionClass() {
|
||||
@@ -459,10 +379,6 @@ class SystemOutOfMemoryExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.OutOfMemoryException` class. */
|
||||
deprecated
|
||||
SystemOutOfMemoryExceptionClass getSystemOutOfMemoryExceptionClass() { any() }
|
||||
|
||||
/** The `System.OverflowException` class. */
|
||||
class SystemOverflowExceptionClass extends SystemClass {
|
||||
SystemOverflowExceptionClass() {
|
||||
@@ -470,10 +386,6 @@ class SystemOverflowExceptionClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.OverflowException` class. */
|
||||
deprecated
|
||||
SystemOverflowExceptionClass getSystemOverflowExceptionClass() { any() }
|
||||
|
||||
/** The `System.Predicate<T>` delegate type. */
|
||||
class SystemPredicateDelegateType extends SystemUnboundGenericDelegateType {
|
||||
SystemPredicateDelegateType() {
|
||||
@@ -483,10 +395,6 @@ class SystemPredicateDelegateType extends SystemUnboundGenericDelegateType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Predicate<T>` delegate type. */
|
||||
deprecated
|
||||
SystemPredicateDelegateType getSystemPredicateDelegateType() { any() }
|
||||
|
||||
/** The `System.String` class. */
|
||||
class SystemStringClass extends StringType {
|
||||
/** Gets the `Equals(object)` method. */
|
||||
@@ -642,10 +550,6 @@ class SystemStringClass extends StringType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.String` class. */
|
||||
deprecated
|
||||
SystemStringClass getSystemStringClass() { any() }
|
||||
|
||||
/** A `ToString()` method. */
|
||||
class ToStringMethod extends Method {
|
||||
ToStringMethod() {
|
||||
@@ -693,10 +597,6 @@ class SystemTypeClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Type` class. */
|
||||
deprecated
|
||||
SystemTypeClass getSystemTypeClass() { any() }
|
||||
|
||||
/** The `System.Uri` class. */
|
||||
class SystemUriClass extends SystemClass {
|
||||
SystemUriClass() {
|
||||
@@ -731,10 +631,6 @@ class SystemUriClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Uri` class. */
|
||||
deprecated
|
||||
SystemUriClass getSystemUriClass() { any() }
|
||||
|
||||
/** The `System.ValueType` class. */
|
||||
class SystemValueTypeClass extends SystemClass {
|
||||
SystemValueTypeClass() {
|
||||
@@ -742,10 +638,6 @@ class SystemValueTypeClass extends SystemClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.ValueType` class. */
|
||||
deprecated
|
||||
SystemValueTypeClass getSystemValueTypeClass() { any() }
|
||||
|
||||
/** The `System.IntPtr` type. */
|
||||
class SystemIntPtrType extends ValueType {
|
||||
SystemIntPtrType() {
|
||||
@@ -755,10 +647,6 @@ class SystemIntPtrType extends ValueType {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IntPtr` type. */
|
||||
deprecated
|
||||
SystemIntPtrType getSystemIntPtrType() { any() }
|
||||
|
||||
/** The `System.IDisposable` interface. */
|
||||
class SystemIDisposableInterface extends SystemInterface {
|
||||
SystemIDisposableInterface() {
|
||||
@@ -777,10 +665,6 @@ class SystemIDisposableInterface extends SystemInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IDisposable` interface. */
|
||||
deprecated
|
||||
SystemIDisposableInterface getSystemIDisposableInterface() { any() }
|
||||
|
||||
/** A method that overrides `int object.GetHashCode()`. */
|
||||
class GetHashCodeMethod extends Method {
|
||||
GetHashCodeMethod() {
|
||||
|
||||
@@ -14,10 +14,6 @@ class MicrosoftOwinNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `Microsoft.Owin` namespace. */
|
||||
deprecated
|
||||
MicrosoftOwinNamespace getMicrosoftOwinNamespace() { any() }
|
||||
|
||||
/** The `Microsoft.Owin.IOwinRequest` class. */
|
||||
class MicrosoftOwinIOwinRequestClass extends Class {
|
||||
MicrosoftOwinIOwinRequestClass() {
|
||||
|
||||
@@ -9,7 +9,3 @@ class SystemCodeDomNamespace extends Namespace {
|
||||
this.hasName("CodeDom")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.CodeDom` namespace. */
|
||||
deprecated
|
||||
SystemCodeDomNamespace getSystemCodeDomNamespace() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemCollectionsNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections` namespace. */
|
||||
deprecated
|
||||
SystemCollectionsNamespace getSystemCollectionsNamespace() { any() }
|
||||
|
||||
/** An interface in the `System.Collections` namespace. */
|
||||
class SystemCollectionsInterface extends Interface {
|
||||
SystemCollectionsInterface() {
|
||||
@@ -43,10 +39,6 @@ class SystemCollectionsIComparerInterface extends SystemCollectionsInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.IComparer` interface. */
|
||||
deprecated
|
||||
SystemCollectionsIComparerInterface getSystemCollectionsIComparerInterface() { any() }
|
||||
|
||||
/** The `System.Collections.IEnumerable` interface. */
|
||||
class SystemCollectionsIEnumerableInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIEnumerableInterface() {
|
||||
@@ -54,10 +46,6 @@ class SystemCollectionsIEnumerableInterface extends SystemCollectionsInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.IEnumerable` interface. */
|
||||
deprecated
|
||||
SystemCollectionsIEnumerableInterface getSystemCollectionsIEnumerableInterface() { any() }
|
||||
|
||||
/** The `System.Collections.IEnumerator` interface. */
|
||||
class SystemCollectionsIEnumeratorInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIEnumeratorInterface() {
|
||||
@@ -74,10 +62,6 @@ class SystemCollectionsIEnumeratorInterface extends SystemCollectionsInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.IEnumerator` interface. */
|
||||
deprecated
|
||||
SystemCollectionsIEnumeratorInterface getSystemCollectionsIEnumeratorInterface() { any() }
|
||||
|
||||
/** The `System.Collections.ICollection` interface. */
|
||||
class SystemCollectionsICollectionInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsICollectionInterface() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemDataNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Data` namespace. */
|
||||
deprecated
|
||||
SystemDataNamespace getSystemDataNamespace() { any() }
|
||||
|
||||
/** An interface in the `System.Data` namespace. */
|
||||
class SystemDataInterface extends Interface {
|
||||
SystemDataInterface() {
|
||||
@@ -37,10 +33,6 @@ class SystemDataIDbCommandInterface extends SystemDataInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Data.IDbCommand` interface. */
|
||||
deprecated
|
||||
SystemDataIDbCommandInterface getSystemDataIDbCommandInterface() { any() }
|
||||
|
||||
/** The `System.Data.IDbConnection` interface. */
|
||||
class SystemDataIDbConnectionInterface extends SystemDataInterface {
|
||||
SystemDataIDbConnectionInterface() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemDiagnosticsNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Diagnostics` namespace. */
|
||||
deprecated
|
||||
SystemDiagnosticsNamespace getSystemDiagnosticsNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Diagnostics` namespace. */
|
||||
class SystemDiagnosticsClass extends Class {
|
||||
SystemDiagnosticsClass() {
|
||||
@@ -40,10 +36,6 @@ class SystemDiagnosticsDebugClass extends SystemDiagnosticsClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Diagnostics.Debug` class. */
|
||||
deprecated
|
||||
SystemDiagnosticsDebugClass getSystemDiagnosticsDebugClass() { any() }
|
||||
|
||||
/** The `System.Diagnostics.ProcessStartInfo` class. */
|
||||
class SystemDiagnosticsProcessStartInfoClass extends SystemDiagnosticsClass {
|
||||
SystemDiagnosticsProcessStartInfoClass() {
|
||||
@@ -73,7 +65,3 @@ class SystemDiagnosticsProcessClass extends SystemDiagnosticsClass {
|
||||
result.getReturnType() instanceof SystemDiagnosticsProcessClass
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Diagnostics.Process` class. */
|
||||
deprecated
|
||||
SystemDiagnosticsProcessClass getSystemDiagnosticsProcessClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemIONamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO` namespace. */
|
||||
deprecated
|
||||
SystemIONamespace getSystemIONamespace() { any() }
|
||||
|
||||
/** A class in the `System.IO` namespace. */
|
||||
class SystemIOClass extends Class {
|
||||
SystemIOClass() {
|
||||
@@ -35,11 +31,6 @@ class SystemIOFileClass extends SystemIOClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO.File` class. */
|
||||
deprecated
|
||||
SystemIOFileClass getSystemIOFileClass() { any() }
|
||||
|
||||
|
||||
/** The `System.IO.FileStream` class. */
|
||||
class SystemIOFileStreamClass extends SystemIOClass {
|
||||
SystemIOFileStreamClass() {
|
||||
@@ -61,10 +52,6 @@ class SystemIOPathClass extends SystemIOClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO.Path` class. */
|
||||
deprecated
|
||||
SystemIOPathClass getSystemIOPathClass() { any() }
|
||||
|
||||
/** The `System.IO.StringReader` class. */
|
||||
class SystemIOStringReaderClass extends SystemIOClass {
|
||||
SystemIOStringReaderClass() {
|
||||
@@ -72,10 +59,6 @@ class SystemIOStringReaderClass extends SystemIOClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO.StringReader` class. */
|
||||
deprecated
|
||||
SystemIOStringReaderClass getSystemIOStringReaderClass() { any() }
|
||||
|
||||
/** The `System.IO.Stream` class. */
|
||||
class SystemIOStreamClass extends SystemIOClass {
|
||||
SystemIOStreamClass() {
|
||||
@@ -123,10 +106,6 @@ class SystemIOStreamClass extends SystemIOClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO.Stream` class. */
|
||||
deprecated
|
||||
SystemIOStreamClass getSystemIOStreamClass() { any() }
|
||||
|
||||
/** The `System.IO.MemoryStream` class. */
|
||||
class SystemIOMemoryStreamClass extends SystemIOClass {
|
||||
SystemIOMemoryStreamClass() {
|
||||
@@ -139,7 +118,3 @@ class SystemIOMemoryStreamClass extends SystemIOClass {
|
||||
result.hasName("ToArray")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO.MemoryStream` class. */
|
||||
deprecated
|
||||
SystemIOMemoryStreamClass getSystemIOMemoryStreamClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemReflectionNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Reflection` namespace. */
|
||||
deprecated
|
||||
SystemReflectionNamespace getSystemReflectionNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Reflection` namespace. */
|
||||
class SystemReflectionClass extends Class {
|
||||
SystemReflectionClass() {
|
||||
@@ -58,17 +54,9 @@ class SystemReflectionMethodBaseClass extends SystemReflectionClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Reflection.MethodBase` class. */
|
||||
deprecated
|
||||
SystemReflectionMethodBaseClass getSystemReflectionMethodBaseClass() { any() }
|
||||
|
||||
/** The `System.Reflection.MethodInfo` class. */
|
||||
class SystemReflectionMethodInfoClass extends SystemReflectionClass {
|
||||
SystemReflectionMethodInfoClass() {
|
||||
this.hasName("MethodInfo")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Reflection.MethodInfo` class. */
|
||||
deprecated
|
||||
SystemReflectionMethodInfoClass getSystemReflectionMethodInfoClass() { any() }
|
||||
|
||||
@@ -9,7 +9,3 @@ class SystemRuntimeNamespace extends Namespace {
|
||||
this.hasName("Runtime")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Runtime` namespace. */
|
||||
deprecated
|
||||
SystemRuntimeNamespace getSystemRuntimeNamespace() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemTextNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Text` namespace. */
|
||||
deprecated
|
||||
SystemTextNamespace getSystemTextNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Text` namespace. */
|
||||
class SystemTextClass extends Class {
|
||||
SystemTextClass() {
|
||||
@@ -33,10 +29,6 @@ class SystemTextStringBuilderClass extends SystemTextClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Text.StringBuilder` class. */
|
||||
deprecated
|
||||
SystemTextStringBuilderClass getSystemTextStringBuilderClass() { any() }
|
||||
|
||||
/** The `System.Text.Encoding` class. */
|
||||
class SystemTextEncodingClass extends SystemTextClass {
|
||||
SystemTextEncodingClass() {
|
||||
@@ -58,7 +50,3 @@ class SystemTextEncodingClass extends SystemTextClass {
|
||||
result = this.getAMethod("GetChars")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Text.Encoding` class. */
|
||||
deprecated
|
||||
SystemTextEncodingClass getSystemTextEncodingClass() { any() }
|
||||
|
||||
@@ -9,7 +9,3 @@ class SystemThreadingNamespace extends Namespace {
|
||||
this.hasName("Threading")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Threading` namespace. */
|
||||
deprecated
|
||||
SystemThreadingNamespace getSystemThreadingNamespace() { any() }
|
||||
|
||||
@@ -11,10 +11,6 @@ class SystemWebNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web` namespace. */
|
||||
deprecated
|
||||
SystemWebNamespace getSystemWebNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Web` namespace. */
|
||||
class SystemWebClass extends Class {
|
||||
SystemWebClass() {
|
||||
@@ -288,19 +284,3 @@ class SystemWebHtmlString extends SystemWebClass {
|
||||
this.hasName("HtmlString")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.HttpRequest` class. */
|
||||
deprecated
|
||||
SystemWebHttpRequestClass getSystemWebHttpRequestClass() { any() }
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.UnvalidatedRequestValues` class. */
|
||||
deprecated
|
||||
SystemWebUnvalidatedRequestValues getSystemWebUnvalidatedRequestValues() { any() }
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.HttpRequestMessage` class. */
|
||||
deprecated
|
||||
SystemWebHttpRequestMessageClass getSystemWebHttpRequestMessageClass() { any() }
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.HttpResponse` class. */
|
||||
deprecated
|
||||
SystemWebHttpResponseClass getSystemWebHttpResponseClass() { any() }
|
||||
|
||||
@@ -18,10 +18,6 @@ class SystemXmlSchemaNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Xml` namespace. */
|
||||
deprecated
|
||||
SystemXmlNamespace getSystemXmlNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Xml` namespace. */
|
||||
class SystemXmlClass extends Class {
|
||||
SystemXmlClass() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemCodeDomCompilerNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.CodeDom.Compiler` namespace. */
|
||||
deprecated
|
||||
SystemCodeDomCompilerNamespace getSystemCodeDomCompilerNamespace() { any() }
|
||||
|
||||
/** A reference type in the `System.CodeDom.Compiler` namespace. */
|
||||
class SystemCodeDomCompilerClass extends RefType {
|
||||
SystemCodeDomCompilerClass() {
|
||||
@@ -28,10 +24,6 @@ class SystemCodeDomCompilerGeneratedCodeAttributeClass extends SystemCodeDomComp
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.CodeDom.Compiler.GeneratedCodeAttribute` class. */
|
||||
deprecated
|
||||
SystemCodeDomCompilerGeneratedCodeAttributeClass getSystemCodeDomCompilerGeneratedCodeAttributeClass() { any() }
|
||||
|
||||
/** The `System.CodeDom.Compiler.ICodeCompiler` class. */
|
||||
class SystemCodeDomCompilerICodeCompilerClass extends SystemCodeDomCompilerClass {
|
||||
SystemCodeDomCompilerICodeCompilerClass() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemCollectionsGenericNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic` namespace. */
|
||||
deprecated
|
||||
SystemCollectionsGenericNamespace getSystemCollectionsGenericNamespace() { any() }
|
||||
|
||||
/** An unbound generic interface in the `System.Collections.Generic` namespace. */
|
||||
class SystemCollectionsGenericUnboundGenericInterface extends UnboundGenericInterface {
|
||||
SystemCollectionsGenericUnboundGenericInterface() {
|
||||
@@ -50,10 +46,6 @@ class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGener
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.IComparer<T>` interface. */
|
||||
deprecated
|
||||
SystemCollectionsGenericIComparerTInterface getSystemCollectionsGenericIComparerTInterface() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.IEqualityComparer<T>` interface. */
|
||||
class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEqualityComparerTInterface() {
|
||||
@@ -76,10 +68,6 @@ class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollecti
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.IEqualityComparer<T>` interface. */
|
||||
deprecated
|
||||
SystemCollectionsGenericIEqualityComparerTInterface getSystemCollectionsGenericIEqualityComparerTInterface() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.IEnumerable<T>` interface. */
|
||||
class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEnumerableTInterface() {
|
||||
@@ -89,10 +77,6 @@ class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGen
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.IEnumerable<T>` interface. */
|
||||
deprecated
|
||||
SystemCollectionsGenericIEnumerableTInterface getSystemCollectionsGenericIEnumerableTInterface() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.IEnumerator<T>` interface. */
|
||||
class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEnumeratorInterface() {
|
||||
@@ -111,10 +95,6 @@ class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGene
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.IEnumerator<T>` interface. */
|
||||
deprecated
|
||||
SystemCollectionsGenericIEnumeratorInterface getSystemCollectionsGenericIEnumeratorInterface() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.IList<T>` interface. */
|
||||
class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIListTInterface() {
|
||||
@@ -124,10 +104,6 @@ class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUn
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.IList<T>` interface. */
|
||||
deprecated
|
||||
SystemCollectionsGenericIListTInterface getSystemCollectionsGenericIListTInterface() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.KeyValuePair<TKey, TValue>` structure. */
|
||||
class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGenericUnboundGenericStruct {
|
||||
SystemCollectionsGenericKeyValuePairStruct() {
|
||||
@@ -155,10 +131,6 @@ class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGeneri
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Generic.KeyValuePair<TKey, TValue>` structure. */
|
||||
deprecated
|
||||
SystemCollectionsGenericKeyValuePairStruct getSystemCollectionsGenericKeyValuePairStruct() { any() }
|
||||
|
||||
/** The `System.Collections.Generic.ICollection<>` interface. */
|
||||
class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericICollectionInterface() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemCollectionsSpecializedNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Specialized` namespace. */
|
||||
deprecated
|
||||
SystemCollectionsSpecializedNamespace getSystemCollectionsSpecializedNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Collections.Specialized` namespace. */
|
||||
class SystemCollectionsSpecializedClass extends Class {
|
||||
SystemCollectionsSpecializedClass() {
|
||||
@@ -27,7 +23,3 @@ class SystemCollectionsSpecializedNameValueCollectionClass extends SystemCollect
|
||||
this.hasName("NameValueCollection")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Collections.Specialized.NameValueCollection` class. */
|
||||
deprecated
|
||||
SystemCollectionsSpecializedNameValueCollectionClass getSystemCollectionsSpecializedNameValueCollectionClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemDataSqlClientNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Data.SqlClient` namespace. */
|
||||
deprecated
|
||||
SystemDataSqlClientNamespace getSystemDataSqlClientNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Data.SqlClient` namespace. */
|
||||
class SystemDataSqlClientClass extends Class {
|
||||
SystemDataSqlClientClass() {
|
||||
@@ -28,10 +24,6 @@ class SystemDataSqlClientSqlDataAdapterClass extends SystemDataSqlClientClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Data.SqlClient.SqlDataAdapter` class. */
|
||||
deprecated
|
||||
SystemDataSqlClientSqlDataAdapterClass getSystemDataSqlClientSqlDataAdapterClass() { any() }
|
||||
|
||||
/** The `System.Data.SqlClient.SqlConnection` class. */
|
||||
class SystemDataSqlClientSqlConnectionClass extends SystemDataSqlClientClass {
|
||||
SystemDataSqlClientSqlConnectionClass() {
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemIOCompressionNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.IO` namespace. */
|
||||
deprecated
|
||||
SystemIOCompressionNamespace getSystemIOCompressionNamespace() { any() }
|
||||
|
||||
/** A class in the `System.IO.Compression` namespace. */
|
||||
class SystemIOCompressionClass extends Class {
|
||||
SystemIOCompressionClass() {
|
||||
|
||||
@@ -11,10 +11,6 @@ class SystemRuntimeInteropServicesNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Runtime.InteropServices` namespace. */
|
||||
deprecated
|
||||
SystemRuntimeInteropServicesNamespace getSystemRuntimeInteropServicesNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Runtime.InteropServices` namespace. */
|
||||
class SystemRuntimeInteropServicesClass extends Class {
|
||||
SystemRuntimeInteropServicesClass() {
|
||||
@@ -29,10 +25,6 @@ class SystemRuntimeInteropServicesDllImportAttributeClass extends SystemRuntimeI
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Runtime.InteropServices.DllImportAttribute` class. */
|
||||
deprecated
|
||||
SystemRuntimeInteropServicesDllImportAttributeClass getSystemRuntimeInteropServicesDllImportAttributeClass() { any() }
|
||||
|
||||
/** The `System.Runtime.InteropServices.Marshal` class. */
|
||||
class SystemRuntimeInteropServicesMarshalClass extends SystemRuntimeInteropServicesClass {
|
||||
SystemRuntimeInteropServicesMarshalClass() {
|
||||
@@ -70,17 +62,9 @@ class SystemRuntimeInteropServicesMarshalClass extends SystemRuntimeInteropServi
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Runtime.InteropServices.Marshal` class. */
|
||||
deprecated
|
||||
SystemRuntimeInteropServicesMarshalClass getSystemRuntimeInteropServicesMarshalClass() { any() }
|
||||
|
||||
/** The `System.Runtime.InteropServices.ComImportAttribute` class. */
|
||||
class SystemRuntimeInteropServicesComImportAttributeClass extends SystemRuntimeInteropServicesClass {
|
||||
SystemRuntimeInteropServicesComImportAttributeClass() {
|
||||
this.hasName("ComImportAttribute")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Runtime.InteropServices.ComImportAttribute` class. */
|
||||
deprecated
|
||||
SystemRuntimeInteropServicesComImportAttributeClass getSystemRuntimeInteropServicesComImportAttributeClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemThreadingTasksNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Threading.Tasks` namespace. */
|
||||
deprecated
|
||||
SystemThreadingTasksNamespace getSystemThreadingTasksNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Threading.Tasks` namespace. */
|
||||
class SystemThreadingTasksClass extends Class {
|
||||
SystemThreadingTasksClass() {
|
||||
@@ -35,10 +31,6 @@ class SystemThreadingTasksTaskClass extends SystemThreadingTasksClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Threading.Tasks.Task` class. */
|
||||
deprecated
|
||||
SystemThreadingTasksTaskClass getSystemThreadingTasksTaskClass() { any() }
|
||||
|
||||
/** The `System.Threading.Tasks.Task<T>` class. */
|
||||
class SystemThreadingTasksTaskTClass extends SystemThreadingTasksUnboundGenericClass {
|
||||
SystemThreadingTasksTaskTClass() {
|
||||
@@ -54,7 +46,3 @@ class SystemThreadingTasksTaskTClass extends SystemThreadingTasksUnboundGenericC
|
||||
result.getType() = this.getTypeParameter(0)
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Threading.Tasks.Task<T>` class. */
|
||||
deprecated
|
||||
SystemThreadingTasksTaskTClass getSystemThreadingTasksTaskTClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemWebServicesNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.Services` namespace. */
|
||||
deprecated
|
||||
SystemWebServicesNamespace getSystemWebServicesNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Web.Services` namespace. */
|
||||
class SystemWebServicesClass extends Class {
|
||||
SystemWebServicesClass() {
|
||||
@@ -27,7 +23,3 @@ class SystemWebServicesWebMethodAttributeClass extends SystemWebServicesClass {
|
||||
this.hasName("WebMethodAttribute")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.Services.WebMethodAttribute` class. */
|
||||
deprecated
|
||||
SystemWebServicesWebMethodAttributeClass getSystemWebServicesWebMethodAttributeClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemWebUINamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.UI` namespace. */
|
||||
deprecated
|
||||
SystemWebUINamespace getSystemWebUINamespace() { any() }
|
||||
|
||||
/** A class in the `System.Web.UI` namespace. */
|
||||
class SystemWebUIClass extends Class {
|
||||
SystemWebUIClass() {
|
||||
@@ -28,10 +24,6 @@ class SystemWebUIControlClass extends SystemWebUIClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.UI.Control` class. */
|
||||
deprecated
|
||||
SystemWebUIControlClass getSystemWebUIControlClass() { any() }
|
||||
|
||||
/** The `System.Web.UI.Page` class. */
|
||||
class SystemWebUIPageClass extends SystemWebUIClass {
|
||||
SystemWebUIPageClass() {
|
||||
@@ -75,10 +67,6 @@ class SystemWebUIPageClass extends SystemWebUIClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.UI.Page` class. */
|
||||
deprecated
|
||||
SystemWebUIPageClass getSystemWebUIPageClass() { any() }
|
||||
|
||||
/** The `System.Web.UI.HtmlTextWriter` class. */
|
||||
class SystemWebUIHtmlTextWriterClass extends SystemWebUIClass {
|
||||
SystemWebUIHtmlTextWriterClass() {
|
||||
@@ -116,10 +104,6 @@ class SystemWebUIHtmlTextWriterClass extends SystemWebUIClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.UI.HtmlTextWriter` class. */
|
||||
deprecated
|
||||
SystemWebUIHtmlTextWriterClass getSystemWebUIHtmlTextWriterClass() { any() }
|
||||
|
||||
/** The `System.Web.UI.AttributeCollection` class. */
|
||||
class SystemWebUIAttributeCollectionClass extends SystemWebUIClass {
|
||||
SystemWebUIAttributeCollectionClass() {
|
||||
@@ -139,10 +123,6 @@ class SystemWebUIAttributeCollectionClass extends SystemWebUIClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.UI.AttributeCollection` class. */
|
||||
deprecated
|
||||
SystemWebUIAttributeCollectionClass getSystemWebUIAttributeCollectionClass() { any() }
|
||||
|
||||
/** The `System.Web.UI.ClientScriptManager` class. */
|
||||
class SystemWebUIClientScriptManagerClass extends SystemWebUIClass {
|
||||
SystemWebUIClientScriptManagerClass() {
|
||||
@@ -161,7 +141,3 @@ class SystemWebUIClientScriptManagerClass extends SystemWebUIClass {
|
||||
result.hasName("RegisterClientScriptBlock")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.UI.ClientScriptManager` class. */
|
||||
deprecated
|
||||
SystemWebUIClientScriptManagerClass getSystemWebUIClientScriptManagerClass() { any() }
|
||||
|
||||
@@ -10,10 +10,6 @@ class SystemWebUIWebControlsNamespace extends Namespace {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.UI.WebControls` namespace. */
|
||||
deprecated
|
||||
SystemWebUIWebControlsNamespace getSystemWebUIWebControlsNamespace() { any() }
|
||||
|
||||
/** A class in the `System.Web.UI.WebControls` namespace. */
|
||||
class SystemWebUIWebControlsClass extends Class {
|
||||
SystemWebUIWebControlsClass() {
|
||||
@@ -37,10 +33,6 @@ class SystemWebUIWebControlsTextBoxClass extends SystemWebUIWebControlsClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `System.Web.UI.WebControls.TextBox` class. */
|
||||
deprecated
|
||||
SystemWebUIWebControlsTextBoxClass getSystemWebUIWebControlsTextBoxClass() { any() }
|
||||
|
||||
/** The `System.Web.UI.WebControls.Label` class. */
|
||||
class SystemWebUIWebControlsLabelClass extends SystemWebUIWebControlsClass {
|
||||
SystemWebUIWebControlsLabelClass() {
|
||||
|
||||
@@ -114,7 +114,3 @@ class AssertFailedExceptionClass extends ExceptionClass {
|
||||
this.hasName("AssertFailedException")
|
||||
}
|
||||
}
|
||||
|
||||
/** DEPRECATED. Gets the `Microsoft.VisualStudio.TestTools.UnitTesting.Assert` class. */
|
||||
deprecated
|
||||
VSTestAssertClass getVSTestAssertClass() { any() }
|
||||
|
||||
@@ -80,6 +80,7 @@ class NamedElement extends Element, @dotnet_named_element {
|
||||
}
|
||||
|
||||
/** Gets a unique string label for this element. */
|
||||
cached
|
||||
string getLabel() { none() }
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* This tests the correct extraction of F<T>, and we should end up with
|
||||
* 2 constructed methods of F<T>.
|
||||
*/
|
||||
|
||||
|
||||
// semmle-extractor-options: --cil
|
||||
|
||||
namespace Methods
|
||||
|
||||
@@ -290,3 +290,14 @@ class ForeachStatements
|
||||
foreach (var (a, b) in list) { }
|
||||
}
|
||||
}
|
||||
|
||||
class ForLoops
|
||||
{
|
||||
void Test()
|
||||
{
|
||||
for(int x=0; x<10 && x is int y; ++x)
|
||||
{
|
||||
Console.WriteLine(y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,3 +66,10 @@
|
||||
| CSharp7.cs:284:13:284:62 | IEnumerable<(Int32,String)> list = ... | CSharp7.cs:290:32:290:35 | access to local variable list |
|
||||
| CSharp7.cs:284:32:284:35 | item | CSharp7.cs:284:41:284:44 | access to parameter item |
|
||||
| CSharp7.cs:284:32:284:35 | item | CSharp7.cs:284:51:284:54 | access to parameter item |
|
||||
| CSharp7.cs:298:17:298:19 | Int32 x = ... | CSharp7.cs:298:22:298:22 | access to local variable x |
|
||||
| CSharp7.cs:298:17:298:19 | Int32 x = ... | CSharp7.cs:298:30:298:30 | access to local variable x |
|
||||
| CSharp7.cs:298:17:298:19 | Int32 x = ... | CSharp7.cs:298:44:298:44 | access to local variable x |
|
||||
| CSharp7.cs:298:35:298:39 | Int32 y | CSharp7.cs:300:31:300:31 | access to local variable y |
|
||||
| CSharp7.cs:298:42:298:44 | ++... | CSharp7.cs:298:22:298:22 | access to local variable x |
|
||||
| CSharp7.cs:298:42:298:44 | ++... | CSharp7.cs:298:30:298:30 | access to local variable x |
|
||||
| CSharp7.cs:298:42:298:44 | ++... | CSharp7.cs:298:44:298:44 | access to local variable x |
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
| CSharp7.cs:238:18:238:31 | ... is ... | CSharp7.cs:238:23:238:28 | access to type String | String | CSharp7.cs:238:23:238:31 | String s1 | false |
|
||||
| CSharp7.cs:245:18:245:28 | ... is ... | CSharp7.cs:245:23:245:25 | access to type Object | Object | CSharp7.cs:245:23:245:28 | Object v1 | true |
|
||||
| CSharp7.cs:255:27:255:40 | ... is ... | CSharp7.cs:255:32:255:37 | access to type String | String | CSharp7.cs:255:32:255:40 | String s4 | false |
|
||||
| CSharp7.cs:298:30:298:39 | ... is ... | CSharp7.cs:298:35:298:37 | access to type Int32 | Int32 | CSharp7.cs:298:35:298:39 | Int32 y | false |
|
||||
|
||||
@@ -193,3 +193,14 @@
|
||||
| CSharp7.cs:288:36:288:39 | access to local variable list | CSharp7.cs:290:32:290:35 | access to local variable list |
|
||||
| CSharp7.cs:290:23:290:23 | Int32 a | CSharp7.cs:290:18:290:27 | (..., ...) |
|
||||
| CSharp7.cs:290:26:290:26 | String b | CSharp7.cs:290:18:290:27 | (..., ...) |
|
||||
| CSharp7.cs:298:17:298:19 | SSA def(x) | CSharp7.cs:298:22:298:39 | SSA phi(x) |
|
||||
| CSharp7.cs:298:19:298:19 | 0 | CSharp7.cs:298:17:298:19 | SSA def(x) |
|
||||
| CSharp7.cs:298:22:298:22 | access to local variable x | CSharp7.cs:298:22:298:25 | ... < ... |
|
||||
| CSharp7.cs:298:22:298:22 | access to local variable x | CSharp7.cs:298:30:298:30 | access to local variable x |
|
||||
| CSharp7.cs:298:22:298:25 | ... < ... | CSharp7.cs:298:22:298:39 | ... && ... |
|
||||
| CSharp7.cs:298:22:298:39 | SSA phi(x) | CSharp7.cs:298:22:298:22 | access to local variable x |
|
||||
| CSharp7.cs:298:30:298:30 | access to local variable x | CSharp7.cs:298:35:298:39 | SSA def(y) |
|
||||
| CSharp7.cs:298:30:298:30 | access to local variable x | CSharp7.cs:298:44:298:44 | access to local variable x |
|
||||
| CSharp7.cs:298:30:298:39 | ... is ... | CSharp7.cs:298:22:298:39 | ... && ... |
|
||||
| CSharp7.cs:298:35:298:39 | SSA def(y) | CSharp7.cs:300:31:300:31 | access to local variable y |
|
||||
| CSharp7.cs:298:42:298:44 | SSA def(x) | CSharp7.cs:298:22:298:39 | SSA phi(x) |
|
||||
|
||||
@@ -65,3 +65,5 @@
|
||||
| CSharp7.cs:288:30:288:30 | b | string |
|
||||
| CSharp7.cs:290:23:290:23 | a | int |
|
||||
| CSharp7.cs:290:26:290:26 | b | string |
|
||||
| CSharp7.cs:298:17:298:17 | x | int |
|
||||
| CSharp7.cs:298:39:298:39 | y | int |
|
||||
|
||||
@@ -1,200 +0,0 @@
|
||||
WARNING: Predicate getAFirstUncertainRead has been deprecated and may be removed in future (DefAdjacentUncertainRead.ql:4,18-40)
|
||||
| Capture.cs:6:16:6:16 | i | Capture.cs:6:16:6:16 | i | Capture.cs:8:17:8:17 | access to parameter i |
|
||||
| Capture.cs:6:16:6:16 | i | Capture.cs:13:13:13:17 | ... = ... | Capture.cs:14:17:14:17 | access to parameter i |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:8:13:8:17 | Int32 x = ... | Capture.cs:34:13:34:13 | access to local variable x |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:15:13:15:17 | ... = ... | Capture.cs:16:17:16:17 | access to local variable x |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:43:9:43:13 | ... = ... | Capture.cs:44:11:44:11 | access to local variable x |
|
||||
| Capture.cs:10:16:10:16 | a | Capture.cs:10:16:27:9 | Action a = ... | Capture.cs:38:9:38:9 | access to local variable a |
|
||||
| Capture.cs:17:17:17:17 | y | Capture.cs:17:17:17:21 | Int32 y = ... | Capture.cs:26:17:26:17 | access to local variable y |
|
||||
| Capture.cs:19:20:19:20 | b | Capture.cs:19:20:23:13 | Action b = ... | Capture.cs:25:13:25:13 | access to local variable b |
|
||||
| Capture.cs:29:13:29:13 | z | Capture.cs:29:13:29:17 | Int32 z = ... | Capture.cs:35:13:35:13 | access to local variable z |
|
||||
| Capture.cs:29:13:29:13 | z | Capture.cs:37:9:37:13 | ... = ... | Capture.cs:41:13:41:13 | access to local variable z |
|
||||
| Capture.cs:30:16:30:16 | c | Capture.cs:30:16:30:35 | Action c = ... | Capture.cs:32:9:32:9 | access to local variable c |
|
||||
| Capture.cs:50:20:50:20 | a | Capture.cs:50:20:50:20 | a | Capture.cs:54:9:54:9 | access to parameter a |
|
||||
| Capture.cs:52:16:52:16 | b | Capture.cs:52:16:52:43 | Action b = ... | Capture.cs:53:9:53:9 | access to local variable b |
|
||||
| Capture.cs:57:57:57:63 | strings | Capture.cs:57:57:57:63 | strings | Capture.cs:61:9:61:15 | access to parameter strings |
|
||||
| Capture.cs:59:13:59:13 | i | Capture.cs:59:13:59:17 | Int32 i = ... | Capture.cs:62:13:62:13 | access to local variable i |
|
||||
| Capture.cs:60:27:60:27 | e | Capture.cs:60:27:60:38 | Func<String,Int32> e = ... | Capture.cs:61:24:61:24 | access to local variable e |
|
||||
| Capture.cs:65:45:65:51 | strings | Capture.cs:65:45:65:51 | strings | Capture.cs:68:18:68:24 | access to parameter strings |
|
||||
| Capture.cs:68:32:68:32 | s | Capture.cs:68:32:68:32 | s | Capture.cs:68:37:68:37 | access to parameter s |
|
||||
| Capture.cs:69:25:69:25 | s | Capture.cs:69:25:69:25 | s | Capture.cs:69:59:69:59 | access to parameter s |
|
||||
| Capture.cs:73:67:73:73 | strings | Capture.cs:73:67:73:73 | strings | Capture.cs:77:9:77:15 | access to parameter strings |
|
||||
| Capture.cs:75:13:75:13 | i | Capture.cs:75:13:75:17 | Int32 i = ... | Capture.cs:78:13:78:13 | access to local variable i |
|
||||
| Capture.cs:76:63:76:63 | e | Capture.cs:76:63:76:81 | Expression<Func<String,Int32>> e = ... | Capture.cs:77:24:77:24 | access to local variable e |
|
||||
| Capture.cs:81:28:81:28 | i | Capture.cs:81:28:81:28 | i | Capture.cs:81:34:81:34 | access to parameter i |
|
||||
| Capture.cs:83:65:83:71 | strings | Capture.cs:83:65:83:71 | strings | Capture.cs:87:9:87:15 | access to parameter strings |
|
||||
| Capture.cs:86:64:86:64 | e | Capture.cs:86:64:86:73 | Expression<Func<String,Boolean>> e = ... | Capture.cs:87:23:87:23 | access to local variable e |
|
||||
| Capture.cs:92:18:92:18 | d | Capture.cs:92:18:92:18 | d | Capture.cs:92:24:92:24 | access to parameter d |
|
||||
| Capture.cs:98:17:98:17 | x | Capture.cs:98:17:98:21 | Int32 x = ... | Capture.cs:99:20:99:20 | access to local variable x |
|
||||
| Capture.cs:102:13:102:13 | z | Capture.cs:105:13:105:17 | ... = ... | Capture.cs:106:20:106:20 | access to local variable z |
|
||||
| Capture.cs:117:17:117:17 | x | Capture.cs:117:17:117:21 | Int32 x = ... | Capture.cs:118:17:118:17 | access to local variable x |
|
||||
| Capture.cs:122:13:122:13 | b | Capture.cs:125:13:125:17 | ... = ... | Capture.cs:126:17:126:17 | access to local variable b |
|
||||
| Capture.cs:130:13:130:13 | c | Capture.cs:130:13:130:18 | Int32 c = ... | Capture.cs:137:13:137:13 | access to local variable c |
|
||||
| Capture.cs:130:13:130:13 | c | Capture.cs:133:13:133:17 | ... = ... | Capture.cs:134:17:134:17 | access to local variable c |
|
||||
| Capture.cs:139:13:139:13 | d | Capture.cs:139:13:139:18 | Int32 d = ... | Capture.cs:145:13:145:13 | access to local variable d |
|
||||
| Capture.cs:154:13:154:13 | f | Capture.cs:154:13:154:18 | Int32 f = ... | Capture.cs:155:13:155:13 | access to local variable f |
|
||||
| Capture.cs:168:13:168:13 | h | Capture.cs:171:13:171:17 | ... = ... | Capture.cs:177:17:177:17 | access to local variable h |
|
||||
| Capture.cs:198:28:198:29 | eh | Capture.cs:198:28:198:44 | MyEventHandler eh = ... | Capture.cs:199:27:199:28 | access to local variable eh |
|
||||
| Capture.cs:203:28:203:30 | eh2 | Capture.cs:203:28:203:45 | MyEventHandler eh2 = ... | Capture.cs:204:27:204:29 | access to local variable eh2 |
|
||||
| Capture.cs:210:24:210:24 | p | Capture.cs:210:24:210:59 | Process p = ... | Capture.cs:213:17:213:17 | access to local variable p |
|
||||
| Capture.cs:212:30:212:35 | exited | Capture.cs:212:30:212:71 | EventHandler exited = ... | Capture.cs:213:29:213:34 | access to local variable exited |
|
||||
| Capture.cs:229:13:229:13 | i | Capture.cs:232:9:232:13 | ... = ... | Capture.cs:237:34:237:34 | access to local variable i |
|
||||
| Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | b | Consistency.cs:11:17:11:17 | access to parameter b |
|
||||
| Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | Int32 i = ... | Consistency.cs:16:17:16:17 | access to local variable i |
|
||||
| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | Consistency c | Consistency.cs:26:13:26:13 | access to local variable c |
|
||||
| Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | ... = ... | Consistency.cs:33:9:33:9 | access to parameter c |
|
||||
| Consistency.cs:38:13:38:13 | i | Consistency.cs:39:28:39:32 | ... = ... | Consistency.cs:39:39:39:39 | access to local variable i |
|
||||
| Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | S s | Consistency.cs:45:9:45:9 | access to local variable s |
|
||||
| Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:47:49:47 | access to parameter a |
|
||||
| Consistency.cs:49:37:49:37 | i | Consistency.cs:49:37:49:37 | i | Consistency.cs:49:49:49:49 | access to parameter i |
|
||||
| Consistency.cs:51:20:51:20 | a | Consistency.cs:51:20:51:20 | a | Consistency.cs:53:28:53:28 | access to parameter a |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:3:26:3:26 | w | DefUse.cs:9:13:9:13 | access to parameter w |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:19:13:19:18 | ... = ... | DefUse.cs:20:17:20:17 | access to parameter w |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | ... = ... | DefUse.cs:35:13:35:13 | access to parameter w |
|
||||
| DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | Int32 x = ... | DefUse.cs:11:13:11:13 | access to local variable x |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:6:14:6:19 | Int64 y = ... | DefUse.cs:8:13:8:13 | access to local variable y |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:13:13:13:18 | ... = ... | DefUse.cs:14:17:14:17 | access to local variable y |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:18:13:18:18 | ... = ... | DefUse.cs:23:13:23:13 | access to local variable y |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:28:13:28:18 | ... = ... | DefUse.cs:34:13:34:13 | access to local variable y |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:39:13:39:18 | ... = ... | DefUse.cs:42:13:42:13 | access to local variable y |
|
||||
| DefUse.cs:44:13:44:13 | z | DefUse.cs:44:13:44:17 | Int32 z = ... | DefUse.cs:45:13:45:13 | access to local variable z |
|
||||
| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | access to local variable z | DefUse.cs:48:13:48:13 | access to local variable z |
|
||||
| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | access to local variable z | DefUse.cs:51:13:51:13 | access to local variable z |
|
||||
| DefUse.cs:59:13:59:13 | i | DefUse.cs:59:13:59:17 | Int32 i = ... | DefUse.cs:61:13:61:13 | access to local variable i |
|
||||
| DefUse.cs:59:13:59:13 | i | DefUse.cs:71:9:71:13 | ... = ... | DefUse.cs:72:9:72:9 | access to local variable i |
|
||||
| DefUse.cs:59:13:59:13 | i | DefUse.cs:72:9:72:11 | ...++ | DefUse.cs:73:13:73:13 | access to local variable i |
|
||||
| DefUse.cs:59:13:59:13 | i | DefUse.cs:75:9:75:13 | ... = ... | DefUse.cs:76:9:76:9 | access to local variable i |
|
||||
| DefUse.cs:59:13:59:13 | i | DefUse.cs:76:9:76:11 | ...-- | DefUse.cs:77:13:77:13 | access to local variable i |
|
||||
| DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | TestClass tc = ... | DefUse.cs:68:9:68:10 | access to local variable tc |
|
||||
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | Int32 x1 = ... | DefUse.cs:80:30:80:31 | access to local variable x1 |
|
||||
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | access to local variable x1 | DefUse.cs:80:30:80:31 | access to local variable x1 |
|
||||
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | access to local variable x1 | DefUse.cs:81:13:81:14 | access to local variable x1 |
|
||||
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | Int32 x2 = ... | DefUse.cs:85:15:85:16 | access to local variable x2 |
|
||||
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | access to local variable x2 | DefUse.cs:87:13:87:14 | access to local variable x2 |
|
||||
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:86:15:86:16 | access to local variable x2 | DefUse.cs:87:13:87:14 | access to local variable x2 |
|
||||
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | Int32 x3 = ... | DefUse.cs:92:15:92:16 | access to local variable x3 |
|
||||
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | access to local variable x3 | DefUse.cs:94:13:94:14 | access to local variable x3 |
|
||||
| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | access to local variable x4 | DefUse.cs:95:13:95:14 | access to local variable x4 |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:97:13:97:18 | Int32 x5 = ... | DefUse.cs:98:16:98:17 | access to local variable x5 |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:101:13:101:23 | ... = ... | DefUse.cs:98:16:98:17 | access to local variable x5 |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | ... = ... | DefUse.cs:105:13:105:14 | access to local variable x5 |
|
||||
| DefUse.cs:118:45:118:45 | i | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:65:118:65 | access to parameter i |
|
||||
| DefUse.cs:120:17:120:21 | Field | DefUse.cs:53:9:53:17 | ... = ... | DefUse.cs:54:13:54:17 | access to field Field |
|
||||
| DefUse.cs:122:16:122:21 | Field2 | DefUse.cs:63:9:63:18 | ... = ... | DefUse.cs:64:13:64:18 | access to field Field2 |
|
||||
| DefUse.cs:124:16:124:21 | Field3 | DefUse.cs:66:9:66:18 | ... = ... | DefUse.cs:69:13:69:18 | access to field Field3 |
|
||||
| DefUse.cs:126:16:126:19 | Prop | DefUse.cs:56:9:56:16 | ... = ... | DefUse.cs:57:13:57:16 | access to property Prop |
|
||||
| DefUse.cs:128:19:128:19 | i | DefUse.cs:128:19:128:19 | i | DefUse.cs:129:19:129:19 | access to parameter i |
|
||||
| DefUse.cs:134:22:134:22 | d | DefUse.cs:134:22:134:22 | d | DefUse.cs:135:14:135:14 | access to parameter d |
|
||||
| DefUse.cs:142:68:142:69 | ie | DefUse.cs:142:68:142:69 | ie | DefUse.cs:144:27:144:28 | access to parameter ie |
|
||||
| DefUse.cs:144:22:144:22 | x | DefUse.cs:144:22:144:22 | String x | DefUse.cs:146:17:146:17 | access to local variable x |
|
||||
| DefUse.cs:152:9:152:14 | Field4 | DefUse.cs:155:9:155:18 | ... = ... | DefUse.cs:156:13:156:18 | access to field Field4 |
|
||||
| DefUse.cs:166:9:166:14 | Field5 | DefUse.cs:184:9:184:18 | ... = ... | DefUse.cs:185:13:185:18 | access to field Field5 |
|
||||
| DefUse.cs:166:9:166:14 | Field5 | DefUse.cs:188:13:188:22 | ... = ... | DefUse.cs:189:17:189:22 | access to field Field5 |
|
||||
| DefUse.cs:167:23:167:23 | i | DefUse.cs:167:23:167:23 | i | DefUse.cs:169:13:169:13 | access to parameter i |
|
||||
| DefUse.cs:167:23:167:23 | i | DefUse.cs:170:9:170:13 | ... = ... | DefUse.cs:182:13:182:13 | access to parameter i |
|
||||
| DefUse.cs:167:23:167:23 | i | DefUse.cs:173:13:173:17 | ... = ... | DefUse.cs:174:17:174:17 | access to parameter i |
|
||||
| DefUse.cs:171:23:171:23 | a | DefUse.cs:171:23:180:9 | Action a = ... | DefUse.cs:181:9:181:9 | access to local variable a |
|
||||
| DefUse.cs:171:23:171:23 | a | DefUse.cs:186:9:190:9 | ... = ... | DefUse.cs:191:9:191:9 | access to local variable a |
|
||||
| Example.cs:4:9:4:13 | Field | Example.cs:8:9:8:22 | ... = ... | Example.cs:9:13:9:22 | access to field Field |
|
||||
| Example.cs:4:9:4:13 | Field | Example.cs:11:13:11:30 | ... = ... | Example.cs:14:13:14:22 | access to field Field |
|
||||
| Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | i | Example.cs:8:22:8:22 | access to parameter i |
|
||||
| Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | p | Example.cs:22:17:22:17 | access to parameter p |
|
||||
| Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | p | Example.cs:25:13:25:13 | access to parameter p |
|
||||
| Example.cs:18:16:18:16 | p | Example.cs:23:13:23:17 | ... = ... | Example.cs:25:13:25:13 | access to parameter p |
|
||||
| Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | b | Example.cs:20:13:20:13 | access to parameter b |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:24:9:24:23 | ... = ... | Fields.cs:25:13:25:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:42:9:42:23 | ... = ... | Fields.cs:44:13:44:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:45:9:45:25 | ... = ... | Fields.cs:46:13:46:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:80:9:80:25 | ... = ... | Fields.cs:82:19:82:22 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:83:9:83:25 | ... = ... | Fields.cs:85:19:85:22 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:85:9:85:22 | ... = ... | Fields.cs:86:9:86:15 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:87:9:87:22 | ... = ... | Fields.cs:89:9:89:15 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:88:9:88:25 | ... = ... | Fields.cs:90:19:90:22 | access to field xs |
|
||||
| Fields.cs:18:15:18:15 | x | Fields.cs:20:9:20:14 | ... = ... | Fields.cs:21:13:21:13 | access to local variable x |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | Fields f = ... | Fields.cs:31:19:31:19 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:49:13:49:28 | ... = ... | Fields.cs:50:13:50:13 | access to local variable f |
|
||||
| Fields.cs:32:15:32:15 | z | Fields.cs:47:9:47:14 | ... = ... | Fields.cs:48:13:48:13 | access to local variable z |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:77:13:77:45 | Fields f = ... | Fields.cs:80:9:80:9 | access to local variable f |
|
||||
| Fields.cs:78:23:78:23 | a | Fields.cs:78:23:78:54 | Action a = ... | Fields.cs:81:9:81:9 | access to local variable a |
|
||||
| Fields.cs:79:23:79:23 | b | Fields.cs:79:23:79:35 | Action b = ... | Fields.cs:84:9:84:9 | access to local variable b |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:97:9:97:30 | ... = ... | Fields.cs:98:20:98:26 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:102:9:102:28 | ... = ... | Fields.cs:104:16:104:25 | access to field Field |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:95:19:95:19 | f | Fields.cs:97:9:97:9 | access to parameter f |
|
||||
| Fields.cs:107:33:107:33 | f | Fields.cs:107:33:107:33 | f | Fields.cs:107:38:107:38 | access to parameter f |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:13:28:13:32 | access to field Field | OutRef.cs:15:13:15:17 | access to field Field |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:16:21:16:25 | access to field Field | OutRef.cs:17:13:17:17 | access to field Field |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:16:32:16:36 | access to field Field | OutRef.cs:17:13:17:17 | access to field Field |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:19:21:19:25 | access to field Field | OutRef.cs:20:13:20:17 | access to field Field |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:19:32:19:38 | access to field Field | OutRef.cs:21:13:21:19 | access to field Field |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:9:13:9:17 | Int32 j = ... | OutRef.cs:10:32:10:32 | access to local variable j |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | access to local variable j | OutRef.cs:12:13:12:13 | access to local variable j |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | access to local variable j | OutRef.cs:23:13:23:13 | access to local variable j |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | access to local variable j | OutRef.cs:25:13:25:13 | access to local variable j |
|
||||
| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:25:10:25 | Int32 i | OutRef.cs:11:13:11:13 | access to local variable i |
|
||||
| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:21:13:21 | access to local variable i | OutRef.cs:14:13:14:13 | access to local variable i |
|
||||
| OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | OutRef t = ... | OutRef.cs:19:32:19:32 | access to local variable t |
|
||||
| OutRef.cs:28:37:28:37 | j | OutRef.cs:28:37:28:37 | j | OutRef.cs:30:13:30:13 | access to parameter j |
|
||||
| OutRef.cs:34:38:34:38 | j | OutRef.cs:34:38:34:38 | j | OutRef.cs:36:13:36:13 | access to parameter j |
|
||||
| OutRef.cs:39:24:39:24 | b | OutRef.cs:39:24:39:24 | b | OutRef.cs:41:13:41:13 | access to parameter b |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:8:13:8:13 | access to local variable o |
|
||||
| Patterns.cs:8:22:8:23 | i1 | Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:10:38:10:39 | access to local variable i1 |
|
||||
| Patterns.cs:12:30:12:31 | s1 | Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:14:41:14:42 | access to local variable s1 |
|
||||
| Patterns.cs:24:22:24:23 | i2 | Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:30:24:31 | access to local variable i2 |
|
||||
| Patterns.cs:27:22:27:23 | i3 | Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:28:42:28:43 | access to local variable i3 |
|
||||
| Patterns.cs:30:25:30:26 | s2 | Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:31:45:31:46 | access to local variable s2 |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:24:9:24:23 | ... = ... | Properties.cs:25:13:25:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:42:9:42:23 | ... = ... | Properties.cs:44:13:44:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:45:9:45:25 | ... = ... | Properties.cs:46:13:46:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:76:9:76:25 | ... = ... | Properties.cs:78:19:78:22 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:79:9:79:25 | ... = ... | Properties.cs:81:19:81:22 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:81:9:81:22 | ... = ... | Properties.cs:82:9:82:15 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:83:9:83:22 | ... = ... | Properties.cs:85:9:85:15 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:84:9:84:25 | ... = ... | Properties.cs:86:19:86:22 | access to property xs |
|
||||
| Properties.cs:18:15:18:15 | x | Properties.cs:20:9:20:14 | ... = ... | Properties.cs:21:13:21:13 | access to local variable x |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | Properties f = ... | Properties.cs:31:19:31:19 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:49:13:49:32 | ... = ... | Properties.cs:50:13:50:13 | access to local variable f |
|
||||
| Properties.cs:32:15:32:15 | z | Properties.cs:47:9:47:14 | ... = ... | Properties.cs:48:13:48:13 | access to local variable z |
|
||||
| Properties.cs:61:23:61:23 | i | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | access to parameter i |
|
||||
| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:18 | ...-- | Properties.cs:63:16:63:16 | access to parameter i |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:73:13:73:32 | Properties f = ... | Properties.cs:76:9:76:9 | access to local variable f |
|
||||
| Properties.cs:74:23:74:23 | a | Properties.cs:74:23:74:54 | Action a = ... | Properties.cs:77:9:77:9 | access to local variable a |
|
||||
| Properties.cs:75:23:75:23 | b | Properties.cs:75:23:75:35 | Action b = ... | Properties.cs:80:9:80:9 | access to local variable b |
|
||||
| Properties.cs:106:37:106:37 | p | Properties.cs:106:37:106:37 | p | Properties.cs:106:42:106:42 | access to parameter p |
|
||||
| Test.cs:3:9:3:13 | field | Test.cs:7:9:7:17 | ... = ... | Test.cs:33:13:33:17 | access to field field |
|
||||
| Test.cs:3:9:3:13 | field | Test.cs:21:13:21:22 | ... = ... | Test.cs:33:13:33:17 | access to field field |
|
||||
| Test.cs:3:9:3:13 | field | Test.cs:57:9:57:17 | ... = ... | Test.cs:58:13:58:17 | access to field field |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | param1 | Test.cs:11:13:11:18 | access to parameter param1 |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | ...++ | Test.cs:27:17:27:22 | access to parameter param1 |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | ...++ | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | ... = ... | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | param2 | Test.cs:39:27:39:32 | access to parameter param2 |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | Int32 x = ... | Test.cs:13:13:13:13 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | Int32 x = ... | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:13:13:13:15 | ...++ | Test.cs:14:19:14:19 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:14:17:14:19 | ++... | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | ... = ... | Test.cs:36:13:36:13 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | ... = ... | Test.cs:43:16:43:16 | access to local variable x |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:14:13:14:19 | ... = ... | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:19:13:19:17 | ... = ... | Test.cs:20:13:20:13 | access to local variable y |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:20:13:20:18 | ... = ... | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:31:13:31:18 | ... = ... | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:10:13:10:13 | z | Test.cs:15:13:15:17 | ... = ... | Test.cs:24:13:24:13 | access to local variable z |
|
||||
| Test.cs:10:13:10:13 | z | Test.cs:22:13:22:17 | ... = ... | Test.cs:24:13:24:13 | access to local variable z |
|
||||
| Test.cs:34:18:34:18 | i | Test.cs:34:18:34:22 | Int32 i = ... | Test.cs:34:25:34:25 | access to local variable i |
|
||||
| Test.cs:34:18:34:18 | i | Test.cs:34:33:34:35 | ...++ | Test.cs:34:25:34:25 | access to local variable i |
|
||||
| Test.cs:39:22:39:22 | w | Test.cs:39:22:39:22 | Int32 w | Test.cs:41:23:41:23 | access to local variable w |
|
||||
| Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | in | Test.cs:48:13:48:15 | access to parameter in |
|
||||
| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | DivideByZeroException e | Test.cs:70:17:70:17 | access to local variable e |
|
||||
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:20:9:20:34 | ... = ... | Tuples.cs:22:13:22:17 | access to field Field |
|
||||
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:26:9:26:33 | ... = ... | Tuples.cs:27:13:27:17 | access to field Field |
|
||||
| Tuples.cs:5:9:5:13 | Field | Tuples.cs:26:9:26:33 | ... = ... | Tuples.cs:28:13:28:19 | access to field Field |
|
||||
| Tuples.cs:6:9:6:16 | Property | Tuples.cs:20:9:20:34 | ... = ... | Tuples.cs:21:13:21:20 | access to property Property |
|
||||
| Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | ... = ... | Tuples.cs:11:13:11:13 | access to local variable x |
|
||||
| Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | ... = ... | Tuples.cs:15:13:15:13 | access to local variable x |
|
||||
| Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | ... = ... | Tuples.cs:24:13:24:13 | access to local variable x |
|
||||
| Tuples.cs:10:23:10:23 | b | Tuples.cs:10:9:10:54 | ... = ... | Tuples.cs:12:13:12:13 | access to local variable b |
|
||||
| Tuples.cs:10:23:10:23 | b | Tuples.cs:14:9:14:32 | ... = ... | Tuples.cs:16:13:16:13 | access to local variable b |
|
||||
| Tuples.cs:10:33:10:33 | s | Tuples.cs:10:9:10:54 | ... = ... | Tuples.cs:13:13:13:13 | access to local variable s |
|
||||
| Tuples.cs:10:33:10:33 | s | Tuples.cs:14:9:14:32 | ... = ... | Tuples.cs:17:13:17:13 | access to local variable s |
|
||||
| Tuples.cs:18:40:18:44 | tuple | Tuples.cs:18:40:18:57 | (Int32,(Boolean,String)) tuple = ... | Tuples.cs:19:13:19:17 | access to local variable tuple |
|
||||
| Tuples.cs:25:13:25:13 | t | Tuples.cs:25:13:25:28 | Tuples t = ... | Tuples.cs:26:17:26:17 | access to local variable t |
|
||||
@@ -1,5 +0,0 @@
|
||||
import csharp
|
||||
|
||||
from AssignableDefinition def, AssignableRead read
|
||||
where read = def.getAFirstUncertainRead()
|
||||
select def.getTarget(), def, read
|
||||
@@ -1,145 +0,0 @@
|
||||
WARNING: Predicate getANextUncertainRead has been deprecated and may be removed in future (ReadAdjacentUncertainRead.ql:4,21-42)
|
||||
| Capture.cs:6:16:6:16 | i | Capture.cs:8:17:8:17 | access to parameter i | Capture.cs:33:13:33:13 | access to parameter i |
|
||||
| Capture.cs:6:16:6:16 | i | Capture.cs:33:13:33:13 | access to parameter i | Capture.cs:39:13:39:13 | access to parameter i |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:16:17:16:17 | access to local variable x | Capture.cs:17:21:17:21 | access to local variable x |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:34:13:34:13 | access to local variable x | Capture.cs:40:13:40:13 | access to local variable x |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:44:11:44:11 | access to local variable x | Capture.cs:45:13:45:13 | access to local variable x |
|
||||
| Capture.cs:8:13:8:13 | x | Capture.cs:45:13:45:13 | access to local variable x | Capture.cs:47:13:47:13 | access to local variable x |
|
||||
| Capture.cs:10:16:10:16 | a | Capture.cs:38:9:38:9 | access to local variable a | Capture.cs:46:12:46:12 | access to local variable a |
|
||||
| Capture.cs:65:45:65:51 | strings | Capture.cs:68:18:68:24 | access to parameter strings | Capture.cs:70:9:70:15 | access to parameter strings |
|
||||
| Consistency.cs:5:9:5:13 | Field | Consistency.cs:26:13:26:19 | access to field Field | Consistency.cs:27:13:27:19 | access to field Field |
|
||||
| Consistency.cs:25:29:25:29 | c | Consistency.cs:26:13:26:13 | access to local variable c | Consistency.cs:27:13:27:13 | access to local variable c |
|
||||
| Consistency.cs:44:11:44:11 | s | Consistency.cs:45:9:45:9 | access to local variable s | Consistency.cs:46:13:46:13 | access to local variable s |
|
||||
| Consistency.cs:51:20:51:20 | a | Consistency.cs:53:28:53:28 | access to parameter a | Consistency.cs:55:36:55:36 | access to parameter a |
|
||||
| Consistency.cs:51:20:51:20 | a | Consistency.cs:55:36:55:36 | access to parameter a | Consistency.cs:56:36:56:36 | access to parameter a |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:9:13:9:13 | access to parameter w | DefUse.cs:24:13:24:13 | access to parameter w |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:20:17:20:17 | access to parameter w | DefUse.cs:24:13:24:13 | access to parameter w |
|
||||
| DefUse.cs:3:26:3:26 | w | DefUse.cs:35:13:35:13 | access to parameter w | DefUse.cs:53:17:53:17 | access to parameter w |
|
||||
| DefUse.cs:5:13:5:13 | x | DefUse.cs:11:13:11:13 | access to local variable x | DefUse.cs:26:13:26:13 | access to local variable x |
|
||||
| DefUse.cs:5:13:5:13 | x | DefUse.cs:26:13:26:13 | access to local variable x | DefUse.cs:37:13:37:13 | access to local variable x |
|
||||
| DefUse.cs:5:13:5:13 | x | DefUse.cs:37:13:37:13 | access to local variable x | DefUse.cs:44:17:44:17 | access to local variable x |
|
||||
| DefUse.cs:5:13:5:13 | x | DefUse.cs:44:17:44:17 | access to local variable x | DefUse.cs:56:16:56:16 | access to local variable x |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:14:17:14:17 | access to local variable y | DefUse.cs:23:13:23:13 | access to local variable y |
|
||||
| DefUse.cs:6:14:6:14 | y | DefUse.cs:34:13:34:13 | access to local variable y | DefUse.cs:42:13:42:13 | access to local variable y |
|
||||
| DefUse.cs:44:13:44:13 | z | DefUse.cs:48:13:48:13 | access to local variable z | DefUse.cs:50:23:50:23 | access to local variable z |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | access to local variable x5 | DefUse.cs:100:17:100:18 | access to local variable x5 |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | access to local variable x5 | DefUse.cs:104:9:104:10 | access to local variable x5 |
|
||||
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:100:17:100:18 | access to local variable x5 | DefUse.cs:101:18:101:19 | access to local variable x5 |
|
||||
| DefUse.cs:122:16:122:21 | Field2 | DefUse.cs:64:13:64:18 | access to field Field2 | DefUse.cs:80:37:80:42 | access to field Field2 |
|
||||
| DefUse.cs:122:16:122:21 | Field2 | DefUse.cs:80:37:80:42 | access to field Field2 | DefUse.cs:80:37:80:42 | access to field Field2 |
|
||||
| DefUse.cs:144:22:144:22 | x | DefUse.cs:146:17:146:17 | access to local variable x | DefUse.cs:147:17:147:17 | access to local variable x |
|
||||
| DefUse.cs:152:9:152:14 | Field4 | DefUse.cs:156:13:156:18 | access to field Field4 | DefUse.cs:157:13:157:18 | access to field Field4 |
|
||||
| DefUse.cs:152:9:152:14 | Field4 | DefUse.cs:162:13:162:18 | access to field Field4 | DefUse.cs:163:13:163:18 | access to field Field4 |
|
||||
| DefUse.cs:166:9:166:14 | Field5 | DefUse.cs:185:13:185:18 | access to field Field5 | DefUse.cs:192:13:192:18 | access to field Field5 |
|
||||
| DefUse.cs:167:23:167:23 | i | DefUse.cs:177:21:177:21 | access to parameter i | DefUse.cs:178:21:178:21 | access to parameter i |
|
||||
| Example.cs:4:9:4:13 | Field | Example.cs:9:13:9:22 | access to field Field | Example.cs:14:13:14:22 | access to field Field |
|
||||
| Example.cs:4:9:4:13 | Field | Example.cs:14:13:14:22 | access to field Field | Example.cs:15:13:15:22 | access to field Field |
|
||||
| Example.cs:6:23:6:23 | i | Example.cs:8:22:8:22 | access to parameter i | Example.cs:10:13:10:13 | access to parameter i |
|
||||
| Example.cs:6:23:6:23 | i | Example.cs:10:13:10:13 | access to parameter i | Example.cs:11:26:11:26 | access to parameter i |
|
||||
| Example.cs:6:23:6:23 | i | Example.cs:10:13:10:13 | access to parameter i | Example.cs:12:18:12:18 | access to parameter i |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:18:19:18:20 | access to field xs | Fields.cs:20:13:20:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:20:13:20:14 | access to field xs | Fields.cs:23:13:23:19 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:31:19:31:22 | access to field xs | Fields.cs:35:13:35:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:32:19:32:20 | access to field xs | Fields.cs:36:13:36:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:35:13:35:16 | access to field xs | Fields.cs:39:13:39:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:36:13:36:14 | access to field xs | Fields.cs:40:13:40:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:39:13:39:16 | access to field xs | Fields.cs:43:13:43:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:44:13:44:14 | access to field xs | Fields.cs:47:13:47:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:46:13:46:16 | access to field xs | Fields.cs:50:13:50:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:47:13:47:14 | access to field xs | Fields.cs:53:13:53:14 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:50:13:50:16 | access to field xs | Fields.cs:52:13:52:16 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:85:19:85:22 | access to field xs | Fields.cs:87:19:87:22 | access to field xs |
|
||||
| Fields.cs:5:18:5:19 | xs | Fields.cs:116:21:116:39 | access to field xs | Fields.cs:117:17:117:35 | access to field xs |
|
||||
| Fields.cs:6:25:6:28 | stat | Fields.cs:33:19:33:22 | access to field stat | Fields.cs:37:13:37:16 | access to field stat |
|
||||
| Fields.cs:6:25:6:28 | stat | Fields.cs:37:13:37:16 | access to field stat | Fields.cs:41:13:41:16 | access to field stat |
|
||||
| Fields.cs:6:25:6:28 | stat | Fields.cs:41:13:41:16 | access to field stat | Fields.cs:54:13:54:16 | access to field stat |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:31:19:31:19 | access to local variable f | Fields.cs:35:13:35:13 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:35:13:35:13 | access to local variable f | Fields.cs:38:9:38:9 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:38:9:38:9 | access to local variable f | Fields.cs:39:13:39:13 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:39:13:39:13 | access to local variable f | Fields.cs:43:13:43:13 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:43:13:43:13 | access to local variable f | Fields.cs:45:9:45:9 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:45:9:45:9 | access to local variable f | Fields.cs:46:13:46:13 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:46:13:46:13 | access to local variable f | Fields.cs:50:13:50:13 | access to local variable f |
|
||||
| Fields.cs:30:13:30:13 | f | Fields.cs:50:13:50:13 | access to local variable f | Fields.cs:52:13:52:13 | access to local variable f |
|
||||
| Fields.cs:57:9:57:17 | LoopField | Fields.cs:65:24:65:32 | access to field LoopField | Fields.cs:65:24:65:32 | access to field LoopField |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:80:9:80:9 | access to local variable f | Fields.cs:82:19:82:19 | access to local variable f |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:82:19:82:19 | access to local variable f | Fields.cs:83:9:83:9 | access to local variable f |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:83:9:83:9 | access to local variable f | Fields.cs:85:19:85:19 | access to local variable f |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:85:19:85:19 | access to local variable f | Fields.cs:87:19:87:19 | access to local variable f |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:87:19:87:19 | access to local variable f | Fields.cs:88:9:88:9 | access to local variable f |
|
||||
| Fields.cs:77:13:77:13 | f | Fields.cs:88:9:88:9 | access to local variable f | Fields.cs:90:19:90:19 | access to local variable f |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:98:20:98:26 | access to field Field | Fields.cs:99:16:99:22 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:98:20:98:32 | access to field Field | Fields.cs:99:16:99:28 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:99:16:99:22 | access to field Field | Fields.cs:100:16:100:22 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:99:16:99:28 | access to field Field | Fields.cs:100:16:100:28 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:99:16:99:34 | access to field Field | Fields.cs:100:16:100:34 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:100:16:100:22 | access to field Field | Fields.cs:101:16:101:22 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:100:16:100:28 | access to field Field | Fields.cs:101:16:101:28 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:100:16:100:34 | access to field Field | Fields.cs:101:16:101:34 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:100:16:100:40 | access to field Field | Fields.cs:101:16:101:40 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:101:16:101:22 | access to field Field | Fields.cs:102:22:102:28 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:115:20:115:29 | access to field Field | Fields.cs:116:21:116:30 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:115:20:115:35 | access to field Field | Fields.cs:116:21:116:36 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:116:21:116:30 | access to field Field | Fields.cs:117:17:117:26 | access to field Field |
|
||||
| Fields.cs:93:19:93:23 | Field | Fields.cs:116:21:116:36 | access to field Field | Fields.cs:117:17:117:32 | access to field Field |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:97:9:97:9 | access to parameter f | Fields.cs:98:20:98:20 | access to parameter f |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:98:20:98:20 | access to parameter f | Fields.cs:99:16:99:16 | access to parameter f |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:99:16:99:16 | access to parameter f | Fields.cs:100:16:100:16 | access to parameter f |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:100:16:100:16 | access to parameter f | Fields.cs:101:16:101:16 | access to parameter f |
|
||||
| Fields.cs:95:19:95:19 | f | Fields.cs:101:16:101:16 | access to parameter f | Fields.cs:102:22:102:22 | access to parameter f |
|
||||
| OutRef.cs:5:9:5:13 | Field | OutRef.cs:15:13:15:17 | access to field Field | OutRef.cs:16:32:16:36 | access to field Field |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:12:13:12:13 | access to local variable j | OutRef.cs:22:29:22:29 | access to local variable j |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:23:13:23:13 | access to local variable j | OutRef.cs:24:29:24:29 | access to local variable j |
|
||||
| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | access to local variable j | OutRef.cs:25:13:25:13 | access to local variable j |
|
||||
| OutRef.cs:18:13:18:13 | t | OutRef.cs:19:32:19:32 | access to local variable t | OutRef.cs:21:13:21:13 | access to local variable t |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:12:18:12:18 | access to local variable o |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:20:17:20:17 | access to local variable o |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:16:18:16:18 | access to local variable o |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:20:17:20:17 | access to local variable o |
|
||||
| Patterns.cs:7:16:7:16 | o | Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:20:17:20:17 | access to local variable o |
|
||||
| Patterns.cs:24:22:24:23 | i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:25:47:25:48 | access to local variable i2 |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:18:19:18:20 | access to property xs | Properties.cs:20:13:20:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:20:13:20:14 | access to property xs | Properties.cs:23:13:23:19 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:31:19:31:22 | access to property xs | Properties.cs:35:13:35:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:32:19:32:20 | access to property xs | Properties.cs:36:13:36:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:35:13:35:16 | access to property xs | Properties.cs:39:13:39:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:36:13:36:14 | access to property xs | Properties.cs:40:13:40:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:39:13:39:16 | access to property xs | Properties.cs:43:13:43:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:44:13:44:14 | access to property xs | Properties.cs:47:13:47:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:46:13:46:16 | access to property xs | Properties.cs:50:13:50:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:47:13:47:14 | access to property xs | Properties.cs:53:13:53:14 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:50:13:50:16 | access to property xs | Properties.cs:52:13:52:16 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:81:19:81:22 | access to property xs | Properties.cs:83:19:83:22 | access to property xs |
|
||||
| Properties.cs:5:18:5:19 | xs | Properties.cs:115:21:115:39 | access to property xs | Properties.cs:116:17:116:35 | access to property xs |
|
||||
| Properties.cs:6:25:6:28 | stat | Properties.cs:33:19:33:22 | access to property stat | Properties.cs:37:13:37:16 | access to property stat |
|
||||
| Properties.cs:6:25:6:28 | stat | Properties.cs:37:13:37:16 | access to property stat | Properties.cs:41:13:41:16 | access to property stat |
|
||||
| Properties.cs:6:25:6:28 | stat | Properties.cs:41:13:41:16 | access to property stat | Properties.cs:54:13:54:16 | access to property stat |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:31:19:31:19 | access to local variable f | Properties.cs:35:13:35:13 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:35:13:35:13 | access to local variable f | Properties.cs:38:9:38:9 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:38:9:38:9 | access to local variable f | Properties.cs:39:13:39:13 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:39:13:39:13 | access to local variable f | Properties.cs:43:13:43:13 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:43:13:43:13 | access to local variable f | Properties.cs:45:9:45:9 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:45:9:45:9 | access to local variable f | Properties.cs:46:13:46:13 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:46:13:46:13 | access to local variable f | Properties.cs:50:13:50:13 | access to local variable f |
|
||||
| Properties.cs:30:13:30:13 | f | Properties.cs:50:13:50:13 | access to local variable f | Properties.cs:52:13:52:13 | access to local variable f |
|
||||
| Properties.cs:57:16:57:23 | LoopProp | Properties.cs:65:24:65:31 | access to property LoopProp | Properties.cs:65:24:65:31 | access to property LoopProp |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:76:9:76:9 | access to local variable f | Properties.cs:78:19:78:19 | access to local variable f |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:78:19:78:19 | access to local variable f | Properties.cs:79:9:79:9 | access to local variable f |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:79:9:79:9 | access to local variable f | Properties.cs:81:19:81:19 | access to local variable f |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:81:19:81:19 | access to local variable f | Properties.cs:83:19:83:19 | access to local variable f |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:83:19:83:19 | access to local variable f | Properties.cs:84:9:84:9 | access to local variable f |
|
||||
| Properties.cs:73:13:73:13 | f | Properties.cs:84:9:84:9 | access to local variable f | Properties.cs:86:19:86:19 | access to local variable f |
|
||||
| Properties.cs:104:16:104:20 | Props | Properties.cs:114:20:114:29 | access to field Props | Properties.cs:115:21:115:30 | access to field Props |
|
||||
| Properties.cs:104:16:104:20 | Props | Properties.cs:114:20:114:35 | access to field Props | Properties.cs:115:21:115:36 | access to field Props |
|
||||
| Properties.cs:104:16:104:20 | Props | Properties.cs:115:21:115:30 | access to field Props | Properties.cs:116:17:116:26 | access to field Props |
|
||||
| Properties.cs:104:16:104:20 | Props | Properties.cs:115:21:115:36 | access to field Props | Properties.cs:116:17:116:32 | access to field Props |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:11:13:11:18 | access to parameter param1 | Test.cs:27:17:27:22 | access to parameter param1 |
|
||||
| Test.cs:5:15:5:20 | param1 | Test.cs:11:13:11:18 | access to parameter param1 | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | Test.cs:36:13:36:13 | access to local variable x |
|
||||
| Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | Test.cs:43:16:43:16 | access to local variable x |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:25:20:25:20 | access to local variable y | Test.cs:31:13:31:13 | access to local variable y |
|
||||
| Test.cs:9:13:9:13 | y | Test.cs:25:20:25:20 | access to local variable y | Test.cs:43:20:43:20 | access to local variable y |
|
||||
| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | access to local variable i | Test.cs:36:18:36:18 | access to local variable i |
|
||||
| Test.cs:34:18:34:18 | i | Test.cs:36:18:36:18 | access to local variable i | Test.cs:34:33:34:33 | access to local variable i |
|
||||
| Tuples.cs:25:13:25:13 | t | Tuples.cs:26:17:26:17 | access to local variable t | Tuples.cs:28:13:28:13 | access to local variable t |
|
||||
@@ -1,5 +0,0 @@
|
||||
import csharp
|
||||
|
||||
from AssignableRead read1, AssignableRead read2
|
||||
where read2 = read1.getANextUncertainRead()
|
||||
select read1.getTarget(), read1, read2
|
||||
@@ -1,334 +0,0 @@
|
||||
WARNING: Predicate getAFirstUncertainRead has been deprecated and may be removed in future (SsaAdjacentUncertainRead.ql:4,18-40)
|
||||
| Capture.cs:6:16:6:16 | SSA param(i) | Capture.cs:8:17:8:17 | access to parameter i |
|
||||
| Capture.cs:8:13:8:17 | SSA def(x) | Capture.cs:34:13:34:13 | access to local variable x |
|
||||
| Capture.cs:10:16:27:9 | SSA def(a) | Capture.cs:38:9:38:9 | access to local variable a |
|
||||
| Capture.cs:10:20:27:9 | SSA capture def(i) | Capture.cs:12:17:12:17 | access to parameter i |
|
||||
| Capture.cs:13:13:13:17 | SSA def(i) | Capture.cs:14:17:14:17 | access to parameter i |
|
||||
| Capture.cs:15:13:15:17 | SSA def(x) | Capture.cs:16:17:16:17 | access to local variable x |
|
||||
| Capture.cs:17:17:17:21 | SSA def(y) | Capture.cs:26:17:26:17 | access to local variable y |
|
||||
| Capture.cs:19:20:23:13 | SSA def(b) | Capture.cs:25:13:25:13 | access to local variable b |
|
||||
| Capture.cs:19:24:23:13 | SSA capture def(x) | Capture.cs:21:21:21:21 | access to local variable x |
|
||||
| Capture.cs:19:24:23:13 | SSA capture def(y) | Capture.cs:22:21:22:21 | access to local variable y |
|
||||
| Capture.cs:29:13:29:17 | SSA def(z) | Capture.cs:35:13:35:13 | access to local variable z |
|
||||
| Capture.cs:30:16:30:35 | SSA def(c) | Capture.cs:32:9:32:9 | access to local variable c |
|
||||
| Capture.cs:32:9:32:11 | SSA call def(z) | Capture.cs:35:13:35:13 | access to local variable z |
|
||||
| Capture.cs:37:9:37:13 | SSA def(z) | Capture.cs:41:13:41:13 | access to local variable z |
|
||||
| Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:39:13:39:13 | access to parameter i |
|
||||
| Capture.cs:38:9:38:11 | SSA call def(x) | Capture.cs:40:13:40:13 | access to local variable x |
|
||||
| Capture.cs:43:9:43:13 | SSA def(x) | Capture.cs:44:11:44:11 | access to local variable x |
|
||||
| Capture.cs:44:9:44:12 | SSA call def(x) | Capture.cs:45:13:45:13 | access to local variable x |
|
||||
| Capture.cs:50:20:50:20 | SSA param(a) | Capture.cs:54:9:54:9 | access to parameter a |
|
||||
| Capture.cs:52:16:52:43 | SSA def(b) | Capture.cs:53:9:53:9 | access to local variable b |
|
||||
| Capture.cs:53:9:53:11 | SSA call def(a) | Capture.cs:54:9:54:9 | access to parameter a |
|
||||
| Capture.cs:57:57:57:63 | SSA param(strings) | Capture.cs:61:9:61:15 | access to parameter strings |
|
||||
| Capture.cs:59:13:59:17 | SSA def(i) | Capture.cs:62:13:62:13 | access to local variable i |
|
||||
| Capture.cs:60:27:60:38 | SSA def(e) | Capture.cs:61:24:61:24 | access to local variable e |
|
||||
| Capture.cs:60:31:60:38 | SSA capture def(i) | Capture.cs:60:36:60:36 | access to local variable i |
|
||||
| Capture.cs:61:9:61:25 | SSA call def(i) | Capture.cs:62:13:62:13 | access to local variable i |
|
||||
| Capture.cs:65:45:65:51 | SSA param(strings) | Capture.cs:68:18:68:24 | access to parameter strings |
|
||||
| Capture.cs:68:32:68:32 | SSA param(s) | Capture.cs:68:37:68:37 | access to parameter s |
|
||||
| Capture.cs:68:32:68:49 | SSA capture def(c) | Capture.cs:68:48:68:48 | access to local variable c |
|
||||
| Capture.cs:69:9:69:62 | SSA capture def(c) | Capture.cs:69:48:69:48 | access to local variable c |
|
||||
| Capture.cs:69:25:69:25 | SSA param(s) | Capture.cs:69:59:69:59 | access to parameter s |
|
||||
| Capture.cs:73:67:73:73 | SSA param(strings) | Capture.cs:77:9:77:15 | access to parameter strings |
|
||||
| Capture.cs:75:13:75:17 | SSA def(i) | Capture.cs:78:13:78:13 | access to local variable i |
|
||||
| Capture.cs:76:63:76:81 | SSA def(e) | Capture.cs:77:24:77:24 | access to local variable e |
|
||||
| Capture.cs:76:67:76:81 | SSA capture def(i) | Capture.cs:76:80:76:80 | access to local variable i |
|
||||
| Capture.cs:77:9:77:25 | SSA call def(i) | Capture.cs:78:13:78:13 | access to local variable i |
|
||||
| Capture.cs:81:28:81:28 | SSA param(i) | Capture.cs:81:34:81:34 | access to parameter i |
|
||||
| Capture.cs:83:65:83:71 | SSA param(strings) | Capture.cs:87:9:87:15 | access to parameter strings |
|
||||
| Capture.cs:86:64:86:73 | SSA def(e) | Capture.cs:87:23:87:23 | access to local variable e |
|
||||
| Capture.cs:86:68:86:73 | SSA capture def(b) | Capture.cs:86:73:86:73 | access to local variable b |
|
||||
| Capture.cs:92:18:92:18 | SSA param(d) | Capture.cs:92:24:92:24 | access to parameter d |
|
||||
| Capture.cs:96:12:100:9 | SSA capture def(y) | Capture.cs:98:21:98:21 | access to local variable y |
|
||||
| Capture.cs:98:17:98:21 | SSA def(x) | Capture.cs:99:20:99:20 | access to local variable x |
|
||||
| Capture.cs:105:13:105:17 | SSA def(z) | Capture.cs:106:20:106:20 | access to local variable z |
|
||||
| Capture.cs:115:9:119:9 | SSA capture def(a) | Capture.cs:117:21:117:21 | access to local variable a |
|
||||
| Capture.cs:117:17:117:21 | SSA def(x) | Capture.cs:118:17:118:17 | access to local variable x |
|
||||
| Capture.cs:125:13:125:17 | SSA def(b) | Capture.cs:126:17:126:17 | access to local variable b |
|
||||
| Capture.cs:130:13:130:18 | SSA def(c) | Capture.cs:137:13:137:13 | access to local variable c |
|
||||
| Capture.cs:133:13:133:17 | SSA def(c) | Capture.cs:134:17:134:17 | access to local variable c |
|
||||
| Capture.cs:136:9:136:12 | SSA call def(c) | Capture.cs:137:13:137:13 | access to local variable c |
|
||||
| Capture.cs:139:13:139:18 | SSA def(d) | Capture.cs:145:13:145:13 | access to local variable d |
|
||||
| Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:145:13:145:13 | access to local variable d |
|
||||
| Capture.cs:148:9:152:9 | SSA capture def(e) | Capture.cs:150:17:150:17 | access to local variable e |
|
||||
| Capture.cs:154:13:154:18 | SSA def(f) | Capture.cs:155:13:155:13 | access to local variable f |
|
||||
| Capture.cs:163:9:166:9 | SSA capture def(g) | Capture.cs:165:17:165:17 | access to local variable g |
|
||||
| Capture.cs:171:13:171:17 | SSA def(h) | Capture.cs:177:17:177:17 | access to local variable h |
|
||||
| Capture.cs:176:13:176:16 | SSA call def(h) | Capture.cs:177:17:177:17 | access to local variable h |
|
||||
| Capture.cs:183:13:186:13 | SSA capture def(i) | Capture.cs:185:21:185:21 | access to local variable i |
|
||||
| Capture.cs:198:28:198:44 | SSA def(eh) | Capture.cs:199:27:199:28 | access to local variable eh |
|
||||
| Capture.cs:198:33:198:44 | SSA capture def(i) | Capture.cs:198:43:198:43 | access to local variable i |
|
||||
| Capture.cs:203:28:203:45 | SSA def(eh2) | Capture.cs:204:27:204:29 | access to local variable eh2 |
|
||||
| Capture.cs:203:34:203:45 | SSA capture def(i) | Capture.cs:203:44:203:44 | access to local variable i |
|
||||
| Capture.cs:210:24:210:59 | SSA def(p) | Capture.cs:213:17:213:17 | access to local variable p |
|
||||
| Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:213:29:213:34 | access to local variable exited |
|
||||
| Capture.cs:212:39:212:71 | SSA capture def(i) | Capture.cs:212:70:212:70 | access to local variable i |
|
||||
| Capture.cs:231:9:231:49 | SSA capture def(i) | Capture.cs:231:47:231:47 | access to local variable i |
|
||||
| Capture.cs:232:9:232:13 | SSA def(i) | Capture.cs:237:34:237:34 | access to local variable i |
|
||||
| Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:237:34:237:34 | access to local variable i |
|
||||
| Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:11:17:11:17 | access to parameter b |
|
||||
| Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:16:17:16:17 | access to local variable i |
|
||||
| Consistency.cs:15:17:15:21 | [finally: exception(Exception)] SSA def(i) | Consistency.cs:16:17:16:17 | access to local variable i |
|
||||
| Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:26:13:26:13 | access to local variable c |
|
||||
| Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:26:13:26:19 | access to field Field |
|
||||
| Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:33:9:33:9 | access to parameter c |
|
||||
| Consistency.cs:39:28:39:32 | SSA def(i) | Consistency.cs:39:39:39:39 | access to local variable i |
|
||||
| Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:45:9:45:9 | access to local variable s |
|
||||
| Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:47:49:47 | access to parameter a |
|
||||
| Consistency.cs:49:37:49:37 | SSA param(i) | Consistency.cs:49:49:49:49 | access to parameter i |
|
||||
| Consistency.cs:51:20:51:20 | SSA param(a) | Consistency.cs:53:28:53:28 | access to parameter a |
|
||||
| DefUse.cs:3:26:3:26 | SSA param(w) | DefUse.cs:9:13:9:13 | access to parameter w |
|
||||
| DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:11:13:11:13 | access to local variable x |
|
||||
| DefUse.cs:6:14:6:19 | SSA def(y) | DefUse.cs:8:13:8:13 | access to local variable y |
|
||||
| DefUse.cs:13:13:13:18 | SSA def(y) | DefUse.cs:14:17:14:17 | access to local variable y |
|
||||
| DefUse.cs:18:13:18:18 | SSA def(y) | DefUse.cs:23:13:23:13 | access to local variable y |
|
||||
| DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:20:17:20:17 | access to parameter w |
|
||||
| DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:24:13:24:13 | access to parameter w |
|
||||
| DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:23:13:23:13 | access to local variable y |
|
||||
| DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:34:13:34:13 | access to local variable y |
|
||||
| DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:35:13:35:13 | access to parameter w |
|
||||
| DefUse.cs:39:13:39:18 | SSA def(y) | DefUse.cs:42:13:42:13 | access to local variable y |
|
||||
| DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:42:13:42:13 | access to local variable y |
|
||||
| DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:45:13:45:13 | access to local variable z |
|
||||
| DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:48:13:48:13 | access to local variable z |
|
||||
| DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:51:13:51:13 | access to local variable z |
|
||||
| DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:54:13:54:17 | access to field Field |
|
||||
| DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:57:13:57:16 | access to property Prop |
|
||||
| DefUse.cs:59:13:59:17 | SSA def(i) | DefUse.cs:61:13:61:13 | access to local variable i |
|
||||
| DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:64:13:64:18 | access to field Field2 |
|
||||
| DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:69:13:69:18 | access to field Field3 |
|
||||
| DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:68:9:68:10 | access to local variable tc |
|
||||
| DefUse.cs:71:9:71:13 | SSA def(i) | DefUse.cs:72:9:72:9 | access to local variable i |
|
||||
| DefUse.cs:72:9:72:11 | SSA def(i) | DefUse.cs:73:13:73:13 | access to local variable i |
|
||||
| DefUse.cs:75:9:75:13 | SSA def(i) | DefUse.cs:76:9:76:9 | access to local variable i |
|
||||
| DefUse.cs:76:9:76:11 | SSA def(i) | DefUse.cs:77:13:77:13 | access to local variable i |
|
||||
| DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
|
||||
| DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
|
||||
| DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
|
||||
| DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:81:13:81:14 | access to local variable x1 |
|
||||
| DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 |
|
||||
| DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:87:13:87:14 | access to local variable x2 |
|
||||
| DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 |
|
||||
| DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:94:13:94:14 | access to local variable x3 |
|
||||
| DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:95:13:95:14 | access to local variable x4 |
|
||||
| DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 |
|
||||
| DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 |
|
||||
| DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 |
|
||||
| DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:105:13:105:14 | access to local variable x5 |
|
||||
| DefUse.cs:118:45:118:45 | SSA param(i) | DefUse.cs:118:65:118:65 | access to parameter i |
|
||||
| DefUse.cs:128:19:128:19 | SSA param(i) | DefUse.cs:129:19:129:19 | access to parameter i |
|
||||
| DefUse.cs:134:22:134:22 | SSA param(d) | DefUse.cs:135:14:135:14 | access to parameter d |
|
||||
| DefUse.cs:142:68:142:69 | SSA param(ie) | DefUse.cs:144:27:144:28 | access to parameter ie |
|
||||
| DefUse.cs:144:22:144:22 | SSA def(x) | DefUse.cs:146:17:146:17 | access to local variable x |
|
||||
| DefUse.cs:155:9:155:18 | SSA def(this.Field4) | DefUse.cs:156:13:156:18 | access to field Field4 |
|
||||
| DefUse.cs:160:10:160:16 | SSA entry def(this.Field4) | DefUse.cs:162:13:162:18 | access to field Field4 |
|
||||
| DefUse.cs:167:23:167:23 | SSA param(i) | DefUse.cs:169:13:169:13 | access to parameter i |
|
||||
| DefUse.cs:170:9:170:13 | SSA def(i) | DefUse.cs:182:13:182:13 | access to parameter i |
|
||||
| DefUse.cs:171:23:180:9 | SSA def(a) | DefUse.cs:181:9:181:9 | access to local variable a |
|
||||
| DefUse.cs:173:13:173:17 | SSA def(i) | DefUse.cs:174:17:174:17 | access to parameter i |
|
||||
| DefUse.cs:175:32:179:13 | SSA capture def(i) | DefUse.cs:177:21:177:21 | access to parameter i |
|
||||
| DefUse.cs:181:9:181:11 | SSA call def(i) | DefUse.cs:182:13:182:13 | access to parameter i |
|
||||
| DefUse.cs:184:9:184:18 | SSA def(this.Field5) | DefUse.cs:185:13:185:18 | access to field Field5 |
|
||||
| DefUse.cs:186:9:190:9 | SSA def(a) | DefUse.cs:191:9:191:9 | access to local variable a |
|
||||
| DefUse.cs:188:13:188:22 | SSA def(this.Field5) | DefUse.cs:189:17:189:22 | access to field Field5 |
|
||||
| DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | DefUse.cs:192:13:192:18 | access to field Field5 |
|
||||
| Example.cs:6:23:6:23 | SSA param(i) | Example.cs:8:22:8:22 | access to parameter i |
|
||||
| Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:9:13:9:22 | access to field Field |
|
||||
| Example.cs:11:13:11:30 | SSA def(this.Field) | Example.cs:14:13:14:22 | access to field Field |
|
||||
| Example.cs:13:13:13:23 | SSA call def(this.Field) | Example.cs:14:13:14:22 | access to field Field |
|
||||
| Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:14:13:14:22 | access to field Field |
|
||||
| Example.cs:18:16:18:16 | SSA param(p) | Example.cs:22:17:22:17 | access to parameter p |
|
||||
| Example.cs:18:16:18:16 | SSA param(p) | Example.cs:25:13:25:13 | access to parameter p |
|
||||
| Example.cs:18:24:18:24 | SSA param(b) | Example.cs:20:13:20:13 | access to parameter b |
|
||||
| Example.cs:23:13:23:17 | SSA def(p) | Example.cs:25:13:25:13 | access to parameter p |
|
||||
| Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:25:13:25:13 | access to parameter p |
|
||||
| Fields.cs:16:17:16:17 | SSA entry def(this.xs) | Fields.cs:18:19:18:20 | access to field xs |
|
||||
| Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:20:13:20:14 | access to field xs |
|
||||
| Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:21:13:21:13 | access to local variable x |
|
||||
| Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:23:13:23:19 | access to field xs |
|
||||
| Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:23:13:23:19 | access to field xs |
|
||||
| Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:25:13:25:14 | access to field xs |
|
||||
| Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | Fields.cs:33:19:33:22 | access to field stat |
|
||||
| Fields.cs:28:17:28:17 | SSA entry def(this.xs) | Fields.cs:32:19:32:20 | access to field xs |
|
||||
| Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:31:19:31:19 | access to local variable f |
|
||||
| Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | Fields.cs:31:19:31:22 | access to field xs |
|
||||
| Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | Fields.cs:33:19:33:22 | access to field stat |
|
||||
| Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | Fields.cs:37:13:37:16 | access to field stat |
|
||||
| Fields.cs:34:9:34:16 | SSA call def(f.xs) | Fields.cs:35:13:35:16 | access to field xs |
|
||||
| Fields.cs:34:9:34:16 | SSA call def(this.xs) | Fields.cs:36:13:36:14 | access to field xs |
|
||||
| Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | Fields.cs:41:13:41:16 | access to field stat |
|
||||
| Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:39:13:39:16 | access to field xs |
|
||||
| Fields.cs:38:9:38:13 | SSA call def(this.xs) | Fields.cs:40:13:40:14 | access to field xs |
|
||||
| Fields.cs:42:9:42:23 | SSA def(this.xs) | Fields.cs:44:13:44:14 | access to field xs |
|
||||
| Fields.cs:45:9:45:25 | SSA def(f.xs) | Fields.cs:46:13:46:16 | access to field xs |
|
||||
| Fields.cs:47:9:47:14 | SSA def(z) | Fields.cs:48:13:48:13 | access to local variable z |
|
||||
| Fields.cs:49:13:49:28 | SSA def(f) | Fields.cs:50:13:50:13 | access to local variable f |
|
||||
| Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | Fields.cs:50:13:50:16 | access to field xs |
|
||||
| Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:54:13:54:16 | access to field stat |
|
||||
| Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:54:13:54:16 | access to field stat |
|
||||
| Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:50:13:50:13 | access to local variable f |
|
||||
| Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:50:13:50:16 | access to field xs |
|
||||
| Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:54:13:54:16 | access to field stat |
|
||||
| Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | Fields.cs:65:24:65:32 | access to field LoopField |
|
||||
| Fields.cs:63:16:63:28 | SSA untracked def(this.VolatileField) | Fields.cs:63:16:63:28 | access to field VolatileField |
|
||||
| Fields.cs:69:21:69:33 | SSA untracked def(this.VolatileField) | Fields.cs:69:21:69:33 | access to field VolatileField |
|
||||
| Fields.cs:71:17:71:35 | SSA untracked def(this.SingleAccessedField) | Fields.cs:71:17:71:35 | access to field SingleAccessedField |
|
||||
| Fields.cs:76:20:76:38 | SSA untracked def(this.SingleAccessedField) | Fields.cs:76:20:76:38 | access to field SingleAccessedField |
|
||||
| Fields.cs:77:13:77:45 | SSA def(f) | Fields.cs:80:9:80:9 | access to local variable f |
|
||||
| Fields.cs:78:23:78:54 | SSA def(a) | Fields.cs:81:9:81:9 | access to local variable a |
|
||||
| Fields.cs:78:27:78:54 | SSA capture def(f) | Fields.cs:78:35:78:35 | access to local variable f |
|
||||
| Fields.cs:79:23:79:35 | SSA def(b) | Fields.cs:84:9:84:9 | access to local variable b |
|
||||
| Fields.cs:80:9:80:25 | SSA def(f.xs) | Fields.cs:82:19:82:22 | access to field xs |
|
||||
| Fields.cs:81:9:81:11 | SSA call def(f.xs) | Fields.cs:82:19:82:22 | access to field xs |
|
||||
| Fields.cs:83:9:83:25 | SSA def(f.xs) | Fields.cs:85:19:85:22 | access to field xs |
|
||||
| Fields.cs:85:9:85:22 | SSA def(this.xs) | Fields.cs:86:9:86:15 | access to field xs |
|
||||
| Fields.cs:86:9:86:47 | SSA call def(f.xs) | Fields.cs:87:19:87:22 | access to field xs |
|
||||
| Fields.cs:86:24:86:46 | SSA capture def(a) | Fields.cs:86:31:86:31 | access to local variable a |
|
||||
| Fields.cs:87:9:87:22 | SSA def(this.xs) | Fields.cs:89:9:89:15 | access to field xs |
|
||||
| Fields.cs:88:9:88:25 | SSA def(f.xs) | Fields.cs:90:19:90:22 | access to field xs |
|
||||
| Fields.cs:89:24:89:46 | SSA capture def(b) | Fields.cs:89:31:89:31 | access to local variable b |
|
||||
| Fields.cs:95:19:95:19 | SSA param(f) | Fields.cs:97:9:97:9 | access to parameter f |
|
||||
| Fields.cs:97:9:97:30 | SSA def(f.Field) | Fields.cs:98:20:98:26 | access to field Field |
|
||||
| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field) | Fields.cs:98:20:98:32 | access to field Field |
|
||||
| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field) | Fields.cs:99:16:99:34 | access to field Field |
|
||||
| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field.Field) | Fields.cs:100:16:100:40 | access to field Field |
|
||||
| Fields.cs:102:9:102:28 | SSA def(this.Field) | Fields.cs:104:16:104:25 | access to field Field |
|
||||
| Fields.cs:107:33:107:33 | SSA param(f) | Fields.cs:107:38:107:38 | access to parameter f |
|
||||
| Fields.cs:109:10:109:10 | SSA entry def(this.Field) | Fields.cs:115:20:115:29 | access to field Field |
|
||||
| Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field) | Fields.cs:115:20:115:35 | access to field Field |
|
||||
| Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field.xs) | Fields.cs:116:21:116:39 | access to field xs |
|
||||
| Fields.cs:114:9:114:22 | SSA call def(this.Field) | Fields.cs:115:20:115:29 | access to field Field |
|
||||
| Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | Fields.cs:115:20:115:35 | access to field Field |
|
||||
| Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:116:21:116:39 | access to field xs |
|
||||
| OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | OutRef.cs:13:28:13:32 | access to field Field |
|
||||
| OutRef.cs:9:13:9:17 | SSA def(j) | OutRef.cs:10:32:10:32 | access to local variable j |
|
||||
| OutRef.cs:10:25:10:25 | SSA def(i) | OutRef.cs:11:13:11:13 | access to local variable i |
|
||||
| OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:12:13:12:13 | access to local variable j |
|
||||
| OutRef.cs:13:21:13:21 | SSA def(i) | OutRef.cs:14:13:14:13 | access to local variable i |
|
||||
| OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:15:13:15:17 | access to field Field |
|
||||
| OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:17:13:17:17 | access to field Field |
|
||||
| OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:19:32:19:32 | access to local variable t |
|
||||
| OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | OutRef.cs:19:32:19:38 | access to field Field |
|
||||
| OutRef.cs:19:21:19:25 | SSA def(this.Field) | OutRef.cs:20:13:20:17 | access to field Field |
|
||||
| OutRef.cs:19:32:19:38 | SSA def(t.Field) | OutRef.cs:21:13:21:19 | access to field Field |
|
||||
| OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:23:13:23:13 | access to local variable j |
|
||||
| OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:25:13:25:13 | access to local variable j |
|
||||
| OutRef.cs:28:37:28:37 | SSA param(j) | OutRef.cs:30:13:30:13 | access to parameter j |
|
||||
| OutRef.cs:34:38:34:38 | SSA param(j) | OutRef.cs:36:13:36:13 | access to parameter j |
|
||||
| OutRef.cs:39:24:39:24 | SSA param(b) | OutRef.cs:41:13:41:13 | access to parameter b |
|
||||
| Patterns.cs:7:16:7:23 | SSA def(o) | Patterns.cs:8:13:8:13 | access to local variable o |
|
||||
| Patterns.cs:8:18:8:23 | SSA def(i1) | Patterns.cs:10:38:10:39 | access to local variable i1 |
|
||||
| Patterns.cs:12:23:12:31 | SSA def(s1) | Patterns.cs:14:41:14:42 | access to local variable s1 |
|
||||
| Patterns.cs:24:18:24:23 | SSA def(i2) | Patterns.cs:24:30:24:31 | access to local variable i2 |
|
||||
| Patterns.cs:27:18:27:23 | SSA def(i3) | Patterns.cs:28:42:28:43 | access to local variable i3 |
|
||||
| Patterns.cs:30:18:30:26 | SSA def(s2) | Patterns.cs:31:45:31:46 | access to local variable s2 |
|
||||
| Properties.cs:16:17:16:17 | SSA entry def(this.xs) | Properties.cs:18:19:18:20 | access to property xs |
|
||||
| Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:20:13:20:14 | access to property xs |
|
||||
| Properties.cs:20:9:20:14 | SSA def(x) | Properties.cs:21:13:21:13 | access to local variable x |
|
||||
| Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:23:13:23:19 | access to property xs |
|
||||
| Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:23:13:23:19 | access to property xs |
|
||||
| Properties.cs:24:9:24:23 | SSA def(this.xs) | Properties.cs:25:13:25:14 | access to property xs |
|
||||
| Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | Properties.cs:33:19:33:22 | access to property stat |
|
||||
| Properties.cs:28:17:28:17 | SSA entry def(this.xs) | Properties.cs:32:19:32:20 | access to property xs |
|
||||
| Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:31:19:31:19 | access to local variable f |
|
||||
| Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | Properties.cs:31:19:31:22 | access to property xs |
|
||||
| Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | Properties.cs:33:19:33:22 | access to property stat |
|
||||
| Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | Properties.cs:37:13:37:16 | access to property stat |
|
||||
| Properties.cs:34:9:34:16 | SSA call def(f.xs) | Properties.cs:35:13:35:16 | access to property xs |
|
||||
| Properties.cs:34:9:34:16 | SSA call def(this.xs) | Properties.cs:36:13:36:14 | access to property xs |
|
||||
| Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:41:13:41:16 | access to property stat |
|
||||
| Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:39:13:39:16 | access to property xs |
|
||||
| Properties.cs:38:9:38:13 | SSA call def(this.xs) | Properties.cs:40:13:40:14 | access to property xs |
|
||||
| Properties.cs:42:9:42:23 | SSA def(this.xs) | Properties.cs:44:13:44:14 | access to property xs |
|
||||
| Properties.cs:45:9:45:25 | SSA def(f.xs) | Properties.cs:46:13:46:16 | access to property xs |
|
||||
| Properties.cs:47:9:47:14 | SSA def(z) | Properties.cs:48:13:48:13 | access to local variable z |
|
||||
| Properties.cs:49:13:49:32 | SSA def(f) | Properties.cs:50:13:50:13 | access to local variable f |
|
||||
| Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | Properties.cs:50:13:50:16 | access to property xs |
|
||||
| Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:54:13:54:16 | access to property stat |
|
||||
| Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:54:13:54:16 | access to property stat |
|
||||
| Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:50:13:50:13 | access to local variable f |
|
||||
| Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:50:13:50:16 | access to property xs |
|
||||
| Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:54:13:54:16 | access to property stat |
|
||||
| Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | Properties.cs:65:24:65:31 | access to property LoopProp |
|
||||
| Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:63:16:63:16 | access to parameter i |
|
||||
| Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:16 | access to parameter i |
|
||||
| Properties.cs:63:16:63:18 | SSA def(i) | Properties.cs:63:16:63:16 | access to parameter i |
|
||||
| Properties.cs:67:21:67:38 | SSA untracked def(this.SingleAccessedProp) | Properties.cs:67:21:67:38 | access to property SingleAccessedProp |
|
||||
| Properties.cs:72:20:72:37 | SSA untracked def(this.SingleAccessedProp) | Properties.cs:72:20:72:37 | access to property SingleAccessedProp |
|
||||
| Properties.cs:73:13:73:32 | SSA def(f) | Properties.cs:76:9:76:9 | access to local variable f |
|
||||
| Properties.cs:74:23:74:54 | SSA def(a) | Properties.cs:77:9:77:9 | access to local variable a |
|
||||
| Properties.cs:74:27:74:54 | SSA capture def(f) | Properties.cs:74:35:74:35 | access to local variable f |
|
||||
| Properties.cs:75:23:75:35 | SSA def(b) | Properties.cs:80:9:80:9 | access to local variable b |
|
||||
| Properties.cs:76:9:76:25 | SSA def(f.xs) | Properties.cs:78:19:78:22 | access to property xs |
|
||||
| Properties.cs:77:9:77:11 | SSA call def(f.xs) | Properties.cs:78:19:78:22 | access to property xs |
|
||||
| Properties.cs:79:9:79:25 | SSA def(f.xs) | Properties.cs:81:19:81:22 | access to property xs |
|
||||
| Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:82:9:82:15 | access to property xs |
|
||||
| Properties.cs:82:9:82:47 | SSA call def(f.xs) | Properties.cs:83:19:83:22 | access to property xs |
|
||||
| Properties.cs:82:24:82:46 | SSA capture def(a) | Properties.cs:82:31:82:31 | access to local variable a |
|
||||
| Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:85:9:85:15 | access to property xs |
|
||||
| Properties.cs:84:9:84:25 | SSA def(f.xs) | Properties.cs:86:19:86:22 | access to property xs |
|
||||
| Properties.cs:85:24:85:46 | SSA capture def(b) | Properties.cs:85:31:85:31 | access to local variable b |
|
||||
| Properties.cs:95:20:95:38 | SSA untracked def(this.NonTrivialProp) | Properties.cs:95:20:95:38 | access to property NonTrivialProp |
|
||||
| Properties.cs:98:16:98:31 | SSA untracked def(this.VirtualProp) | Properties.cs:98:16:98:31 | access to property VirtualProp |
|
||||
| Properties.cs:100:9:100:26 | SSA untracked def(this.VolatileField) | Properties.cs:100:9:100:26 | access to field VolatileField |
|
||||
| Properties.cs:101:21:101:38 | SSA untracked def(this.VolatileField) | Properties.cs:101:21:101:38 | access to field VolatileField |
|
||||
| Properties.cs:101:21:101:41 | SSA untracked def(this.VolatileField.xs) | Properties.cs:101:21:101:41 | access to property xs |
|
||||
| Properties.cs:106:37:106:37 | SSA param(p) | Properties.cs:106:42:106:42 | access to parameter p |
|
||||
| Properties.cs:108:10:108:10 | SSA entry def(this.Props) | Properties.cs:114:20:114:29 | access to field Props |
|
||||
| Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props) | Properties.cs:114:20:114:35 | access to field Props |
|
||||
| Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props.xs) | Properties.cs:115:21:115:39 | access to property xs |
|
||||
| Properties.cs:113:9:113:22 | SSA call def(this.Props) | Properties.cs:114:20:114:29 | access to field Props |
|
||||
| Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:114:20:114:35 | access to field Props |
|
||||
| Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:115:21:115:39 | access to property xs |
|
||||
| Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:11:13:11:18 | access to parameter param1 |
|
||||
| Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:39:27:39:32 | access to parameter param2 |
|
||||
| Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:33:13:33:17 | access to field field |
|
||||
| Test.cs:8:13:8:17 | SSA def(x) | Test.cs:13:13:13:13 | access to local variable x |
|
||||
| Test.cs:8:13:8:17 | SSA def(x) | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:13:13:13:15 | SSA def(x) | Test.cs:14:19:14:19 | access to local variable x |
|
||||
| Test.cs:14:13:14:19 | SSA def(y) | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:14:17:14:19 | SSA def(x) | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:15:13:15:17 | SSA def(z) | Test.cs:24:13:24:13 | access to local variable z |
|
||||
| Test.cs:19:13:19:17 | SSA def(y) | Test.cs:20:13:20:13 | access to local variable y |
|
||||
| Test.cs:20:13:20:18 | SSA def(y) | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:33:13:33:17 | access to field field |
|
||||
| Test.cs:22:13:22:17 | SSA def(z) | Test.cs:24:13:24:13 | access to local variable z |
|
||||
| Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:33:13:33:17 | access to field field |
|
||||
| Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:25:16:25:16 | access to local variable x |
|
||||
| Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:24:13:24:13 | access to local variable z |
|
||||
| Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:22 | access to parameter param1 |
|
||||
| Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:22 | access to parameter param1 |
|
||||
| Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:31:13:31:18 | SSA def(y) | Test.cs:25:20:25:20 | access to local variable y |
|
||||
| Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:25:34:25 | access to local variable i |
|
||||
| Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i |
|
||||
| Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:36:13:36:13 | access to local variable x |
|
||||
| Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:43:16:43:16 | access to local variable x |
|
||||
| Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:25:34:25 | access to local variable i |
|
||||
| Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:13 | access to local variable x |
|
||||
| Test.cs:36:13:36:18 | SSA def(x) | Test.cs:43:16:43:16 | access to local variable x |
|
||||
| Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:39:22:39:22 | SSA def(w) | Test.cs:41:23:41:23 | access to local variable w |
|
||||
| Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:18 | access to parameter param1 |
|
||||
| Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:56:13:56:17 | access to field field |
|
||||
| Test.cs:46:16:46:18 | SSA param(in) | Test.cs:48:13:48:15 | access to parameter in |
|
||||
| Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:58:13:58:17 | access to field field |
|
||||
| Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:70:17:70:17 | access to local variable e |
|
||||
| Tuples.cs:10:9:10:54 | SSA def(b) | Tuples.cs:12:13:12:13 | access to local variable b |
|
||||
| Tuples.cs:10:9:10:54 | SSA def(s) | Tuples.cs:13:13:13:13 | access to local variable s |
|
||||
| Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:11:13:11:13 | access to local variable x |
|
||||
| Tuples.cs:14:9:14:32 | SSA def(b) | Tuples.cs:16:13:16:13 | access to local variable b |
|
||||
| Tuples.cs:14:9:14:32 | SSA def(s) | Tuples.cs:17:13:17:13 | access to local variable s |
|
||||
| Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:15:13:15:13 | access to local variable x |
|
||||
| Tuples.cs:18:40:18:57 | SSA def(tuple) | Tuples.cs:19:13:19:17 | access to local variable tuple |
|
||||
| Tuples.cs:20:9:20:34 | SSA def(this.Field) | Tuples.cs:22:13:22:17 | access to field Field |
|
||||
| Tuples.cs:20:9:20:34 | SSA def(this.Property) | Tuples.cs:21:13:21:20 | access to property Property |
|
||||
| Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:24:13:24:13 | access to local variable x |
|
||||
| Tuples.cs:25:13:25:28 | SSA def(t) | Tuples.cs:26:17:26:17 | access to local variable t |
|
||||
| Tuples.cs:26:9:26:33 | SSA def(t.Field) | Tuples.cs:28:13:28:19 | access to field Field |
|
||||
| Tuples.cs:26:9:26:33 | SSA def(this.Field) | Tuples.cs:27:13:27:17 | access to field Field |
|
||||
@@ -1,5 +0,0 @@
|
||||
import csharp
|
||||
|
||||
from Ssa::Definition def, AssignableRead read
|
||||
where read = def.getAFirstUncertainRead()
|
||||
select def, read
|
||||
@@ -48,7 +48,7 @@ class Test
|
||||
}
|
||||
|
||||
void Test3(string[] args)
|
||||
{
|
||||
{
|
||||
// GOOD: Guarded by ternary operator.
|
||||
for (int i = 0; i <= args.Length; i++)
|
||||
{
|
||||
@@ -68,7 +68,7 @@ class Test
|
||||
}
|
||||
|
||||
void Test5(string[] args)
|
||||
{
|
||||
{
|
||||
// GOOD: A valid test of Length.
|
||||
for (int i = 0; i != args.Length; i++)
|
||||
{
|
||||
@@ -94,6 +94,6 @@ class Test
|
||||
for (int i = 0; i <= args.Length; i++)
|
||||
{
|
||||
bool b = i == args.Length || args[i] == "x";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="4.2.9" />
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="4.3.1" />
|
||||
|
||||
|
||||
<!-- These are BAD -->
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="4.3.0" />
|
||||
<PackageReference Include="system.text.encodings.web" Version="4.3" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.1.1" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.1.2" />
|
||||
|
||||
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<package id="System.IO.Pipelines" version="4.5.1" targetFramework="net45" />
|
||||
<package id="System.IO.Pipelines" version="4.5.1.0" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNetCore.All" version="2.0.9" targetFramework="net45" />
|
||||
|
||||
|
||||
<!-- These are BAD -->
|
||||
<package id="System.IO.Pipelines" version="4.5.0" targetFramework="net45" />
|
||||
<package id="System.IO.Pipelines" version="4.5.0.0" targetFramework="net45" />
|
||||
|
||||
Reference in New Issue
Block a user