mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Merge pull request #6 from hvitved/csharp/query/constant-condition
Approved by calumgrant
This commit is contained in:
@@ -15,8 +15,11 @@
|
||||
|
||||
| **Query** | **Tags** | **Purpose** |
|
||||
|-----------------------------|-----------|--------------------------------------------------------------------|
|
||||
| [Exposing internal representation (cs/expose-implementation)] | Different results | The query has been rewritten, based on the equivalent Java query. |
|
||||
| Constant condition (cs/constant-condition) | More results | The query has been generalized to cover both `Null-coalescing left operand is constant (cs/constant-null-coalescing)` and `Switch selector is constant (cs/constant-switch-selector)`. |
|
||||
| Exposing internal representation (cs/expose-implementation) | Different results | The query has been rewritten, based on the equivalent Java query. |
|
||||
| Local scope variable shadows member (cs/local-shadows-member) | maintainability, readability | Replaces the existing queries [Local variable shadows class member (cs/local-shadows-class-member)](https://help.semmle.com/wiki/display/CSHARP/Local+variable+shadows+class+member), [Local variable shadows struct member (cs/local-shadows-struct-member)](https://help.semmle.com/wiki/display/CSHARP/Local+variable+shadows+struct+member), [Parameter shadows class member (cs/parameter-shadows-class-member)](https://help.semmle.com/wiki/display/CSHARP/Parameter+shadows+class+member), and [Parameter shadows struct member (cs/parameter-shadows-struct-member)](https://help.semmle.com/wiki/display/CSHARP/Parameter+shadows+struct+member). |
|
||||
| Null-coalescing left operand is constant (cs/constant-null-coalescing) | No results | The query has been removed, as it is now covered by `Constant condition (cs/constant-condition)`. |
|
||||
| Switch selector is constant (cs/constant-switch-selector) | No results | The query has been removed, as it is now covered by `Constant condition (cs/constant-condition)`. |
|
||||
|
||||
## Changes to existing queries
|
||||
|
||||
|
||||
@@ -14,39 +14,111 @@
|
||||
import csharp
|
||||
import semmle.code.csharp.commons.Assertions
|
||||
import semmle.code.csharp.commons.Constants
|
||||
import ControlFlowGraph
|
||||
|
||||
/** A condition of an `if` statement or a conditional expression. */
|
||||
private class IfCondition extends Expr {
|
||||
IfCondition() {
|
||||
this = any(IfStmt is).getCondition() or
|
||||
this = any(ConditionalExpr ce).getCondition()
|
||||
/** A constant condition. */
|
||||
abstract class ConstantCondition extends Expr {
|
||||
/** Gets the alert message for this constant condition. */
|
||||
abstract string getMessage();
|
||||
|
||||
/** Holds if this constant condition is white-listed. */
|
||||
predicate isWhiteListed() { none() }
|
||||
}
|
||||
|
||||
/** A constant Boolean condition. */
|
||||
class ConstantBooleanCondition extends ConstantCondition {
|
||||
boolean b;
|
||||
|
||||
ConstantBooleanCondition() {
|
||||
isConstantCondition(this, b)
|
||||
}
|
||||
|
||||
override string getMessage() {
|
||||
result = "Condition always evaluates to '" + b + "'."
|
||||
}
|
||||
|
||||
override predicate isWhiteListed() {
|
||||
// E.g. `x ?? false`
|
||||
this.(BoolLiteral) = any(NullCoalescingExpr nce).getRightOperand()
|
||||
}
|
||||
}
|
||||
|
||||
/** A loop condition */
|
||||
private class LoopCondition extends Expr {
|
||||
LoopCondition() {
|
||||
/** A constant condition in an `if` statement or a conditional expression. */
|
||||
class ConstantIfCondition extends ConstantBooleanCondition {
|
||||
ConstantIfCondition() {
|
||||
this = any(IfStmt is).getCondition().getAChildExpr*() or
|
||||
this = any(ConditionalExpr ce).getCondition().getAChildExpr*()
|
||||
}
|
||||
|
||||
override predicate isWhiteListed() {
|
||||
ConstantBooleanCondition.super.isWhiteListed()
|
||||
or
|
||||
// It is a common pattern to use a local constant/constant field to control
|
||||
// whether code parts must be executed or not
|
||||
this instanceof AssignableRead
|
||||
}
|
||||
}
|
||||
|
||||
/** A constant loop condition. */
|
||||
class ConstantLoopCondition extends ConstantBooleanCondition {
|
||||
ConstantLoopCondition() {
|
||||
this = any(LoopStmt ls).getCondition()
|
||||
}
|
||||
|
||||
override predicate isWhiteListed() {
|
||||
// Clearly intentional infinite loops are allowed
|
||||
this.(BoolLiteral).getBoolValue() = true
|
||||
}
|
||||
}
|
||||
|
||||
/** Holds if `e` is a conditional expression that is allowed to be constant. */
|
||||
predicate isWhiteListed(Expr e) {
|
||||
// It is a common pattern to use a local constant/constant field to control
|
||||
// whether code parts must be executed or not
|
||||
e = any(IfCondition ic).getAChildExpr*() and
|
||||
e instanceof AssignableRead
|
||||
or
|
||||
// Clearly intentional infinite loops are allowed
|
||||
e instanceof LoopCondition and
|
||||
e.(BoolLiteral).getBoolValue() = true
|
||||
or
|
||||
// E.g. `x ?? false`
|
||||
e.(BoolLiteral) = any(NullCoalescingExpr nce).getRightOperand()
|
||||
/** A constant nullness condition. */
|
||||
class ConstantNullnessCondition extends ConstantCondition {
|
||||
boolean b;
|
||||
|
||||
ConstantNullnessCondition() {
|
||||
forex(ControlFlowNode cfn |
|
||||
cfn = this.getAControlFlowNode() |
|
||||
exists(ControlFlowEdgeNullness t |
|
||||
exists(cfn.getASuccessorByType(t)) |
|
||||
if t.isNull() then b = true else b = false
|
||||
) and
|
||||
strictcount(ControlFlowEdgeType t | exists(cfn.getASuccessorByType(t))) = 1
|
||||
)
|
||||
}
|
||||
|
||||
override string getMessage() {
|
||||
if b = true then
|
||||
result = "Expression is always 'null'."
|
||||
else
|
||||
result = "Expression is never 'null'."
|
||||
}
|
||||
}
|
||||
|
||||
from Expr e, boolean b
|
||||
where isConstantCondition(e, b)
|
||||
and not isWhiteListed(e)
|
||||
and not isExprInAssertion(e)
|
||||
select e, "Condition always evaluates to '" + b + "'."
|
||||
/** A constant matching condition. */
|
||||
class ConstantMatchingCondition extends ConstantCondition {
|
||||
boolean b;
|
||||
|
||||
ConstantMatchingCondition() {
|
||||
forex(ControlFlowNode cfn |
|
||||
cfn = this.getAControlFlowNode() |
|
||||
exists(ControlFlowEdgeMatching t |
|
||||
exists(cfn.getASuccessorByType(t)) |
|
||||
if t.isMatch() then b = true else b = false
|
||||
) and
|
||||
strictcount(ControlFlowEdgeType t | exists(cfn.getASuccessorByType(t))) = 1
|
||||
)
|
||||
}
|
||||
|
||||
override string getMessage() {
|
||||
if b = true then
|
||||
result = "Pattern always matches."
|
||||
else
|
||||
result = "Pattern never matches."
|
||||
}
|
||||
}
|
||||
|
||||
from ConstantCondition c, string msg
|
||||
where msg = c.getMessage()
|
||||
and not c.isWhiteListed()
|
||||
and not isExprInAssertion(c)
|
||||
select c, msg
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>If the left hand operand of a null-coalescing operator always evaluates to <code>null</code> the
|
||||
null-coalescing operation is useless. The whole expression will always evaluate to the right hand
|
||||
operand at runtime. This impedes readability and maintainability unnecessarily, by making the code
|
||||
more difficult to read than it should be.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Remove the useless null-coalescing expression and any potential dead code associated with it.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
||||
@@ -1,16 +0,0 @@
|
||||
/**
|
||||
* @name Null-coalescing left operand is constant
|
||||
* @description Finds left operands in null-coalescing expressions that always evaluate to null
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @precision high
|
||||
* @id cs/constant-null-coalescing
|
||||
* @tags maintainability
|
||||
* readability
|
||||
*/
|
||||
import csharp
|
||||
|
||||
from NullCoalescingExpr nce, Expr e
|
||||
where e = nce.getLeftOperand()
|
||||
and exists(e.getValue())
|
||||
select e, "Left operand always evaluates to " + e.getValue() + "."
|
||||
@@ -1,32 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace ConstantSwitchSelector
|
||||
{
|
||||
class Main
|
||||
{
|
||||
const int ZERO = 0;
|
||||
|
||||
public void Foo()
|
||||
{
|
||||
switch (ZERO + 1)
|
||||
{ // BAD
|
||||
case 1: break;
|
||||
}
|
||||
switch ('a')
|
||||
{ // BAD
|
||||
default: break;
|
||||
}
|
||||
switch (Bar())
|
||||
{ // GOOD
|
||||
case 1: break;
|
||||
}
|
||||
}
|
||||
|
||||
public int Bar()
|
||||
{
|
||||
return ZERO;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>A switch selector is useless if it always evaluates to the same constant at runtime. This
|
||||
impedes readability and maintainability unnecessarily, by making the control-flow of the method
|
||||
more difficult to read than it should be.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Remove the useless switch selector and all cases that will never be reached.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
||||
@@ -1,16 +0,0 @@
|
||||
/**
|
||||
* @name Switch selector is constant
|
||||
* @description Finds selectors in switch statements that always evaluate to the same constant
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @precision high
|
||||
* @id cs/constant-switch-selector
|
||||
* @tags maintainability
|
||||
* readability
|
||||
*/
|
||||
import csharp
|
||||
|
||||
from SwitchStmt s, Expr e
|
||||
where e = s.getCondition()
|
||||
and exists(e.getValue())
|
||||
select e, "Selector always evaluates to " + e.getValue() + "."
|
||||
@@ -81,11 +81,11 @@ class Completion extends TCompletion {
|
||||
or
|
||||
if mustHaveBooleanCompletion(cfe) then
|
||||
exists(boolean value |
|
||||
isConstant(cfe, value) |
|
||||
isBooleanConstant(cfe, value) |
|
||||
this = TBooleanCompletion(value, value)
|
||||
)
|
||||
or
|
||||
not isConstant(cfe, _) and
|
||||
not isBooleanConstant(cfe, _) and
|
||||
exists(boolean b | this = TBooleanCompletion(b, b))
|
||||
or
|
||||
// Corner case: In `if (x ?? y) { ... }`, `x` must have both a `true`
|
||||
@@ -94,8 +94,20 @@ class Completion extends TCompletion {
|
||||
mustHaveNullnessCompletion(cfe) and
|
||||
this = TNullnessCompletion(true)
|
||||
else if mustHaveNullnessCompletion(cfe) then
|
||||
exists(boolean value |
|
||||
isNullnessConstant(cfe, value) |
|
||||
this = TNullnessCompletion(value)
|
||||
)
|
||||
or
|
||||
not isNullnessConstant(cfe, _) and
|
||||
this = TNullnessCompletion(_)
|
||||
else if mustHaveMatchingCompletion(cfe) then
|
||||
else if mustHaveMatchingCompletion(_, cfe) then
|
||||
exists(boolean value |
|
||||
isMatchingConstant(cfe, value) |
|
||||
this = TMatchingCompletion(value)
|
||||
)
|
||||
or
|
||||
not isMatchingConstant(cfe, _) and
|
||||
this = TMatchingCompletion(_)
|
||||
else if mustHaveEmptinessCompletion(cfe) then
|
||||
this = TEmptinessCompletion(_)
|
||||
@@ -118,14 +130,82 @@ class Completion extends TCompletion {
|
||||
}
|
||||
}
|
||||
|
||||
private predicate isConstant(Expr e, boolean value) {
|
||||
e.getValue() = "true" and
|
||||
value = true
|
||||
or
|
||||
e.getValue() = "false" and
|
||||
value = false
|
||||
or
|
||||
isConstantComparison(e, value)
|
||||
/** Holds if expression `e` has the Boolean constant value `value`. */
|
||||
private predicate isBooleanConstant(Expr e, boolean value) {
|
||||
mustHaveBooleanCompletion(e) and
|
||||
(
|
||||
e.getValue() = "true" and
|
||||
value = true
|
||||
or
|
||||
e.getValue() = "false" and
|
||||
value = false
|
||||
or
|
||||
isConstantComparison(e, value)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if expression `e` is constantly `null` (`value = true`) or constantly
|
||||
* non-`null` (`value = false`).
|
||||
*/
|
||||
private predicate isNullnessConstant(Expr e, boolean value) {
|
||||
mustHaveNullnessCompletion(e) and
|
||||
exists(Expr stripped |
|
||||
stripped = e.stripCasts() |
|
||||
stripped.getType() = any(ValueType t |
|
||||
not t instanceof NullableType and
|
||||
// Extractor bug: the type of `x?.Length` is reported as `int`, but it should
|
||||
// be `int?`
|
||||
not getQualifier*(stripped).(QualifiableExpr).isConditional()
|
||||
) and
|
||||
value = false
|
||||
or
|
||||
stripped instanceof NullLiteral and
|
||||
value = true
|
||||
or
|
||||
stripped.hasValue() and
|
||||
not stripped instanceof NullLiteral and
|
||||
value = false
|
||||
)
|
||||
}
|
||||
|
||||
private Expr getQualifier(QualifiableExpr e) {
|
||||
// `e.getQualifier()` does not work for calls to extension methods
|
||||
result = e.getChildExpr(-1)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if expression `e` constantly matches (`value = true`) or constantly
|
||||
* non-matches (`value = false`).
|
||||
*/
|
||||
private predicate isMatchingConstant(Expr e, boolean value) {
|
||||
exists(SwitchStmt ss |
|
||||
mustHaveMatchingCompletion(ss, e) |
|
||||
exists(Expr stripped |
|
||||
stripped = ss.getCondition().stripCasts() |
|
||||
exists(ConstCase cc, string strippedValue |
|
||||
cc = ss.getAConstCase() and
|
||||
e = cc.getExpr() and
|
||||
strippedValue = stripped.getValue() |
|
||||
if strippedValue = e.getValue() then
|
||||
value = true
|
||||
else
|
||||
value = false
|
||||
)
|
||||
or
|
||||
exists(TypeCase tc, Type t, Type strippedType |
|
||||
tc = ss.getATypeCase() |
|
||||
e = tc.getTypeAccess() and
|
||||
t = e.getType() and
|
||||
strippedType = stripped.getType() and
|
||||
not t.isImplicitlyConvertibleTo(strippedType) and
|
||||
not t instanceof Interface and
|
||||
not t.containsTypeParameters() and
|
||||
not strippedType.containsTypeParameters() and
|
||||
value = false
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/** A control flow element that is inside a `try` block. */
|
||||
@@ -325,12 +405,10 @@ private predicate inNullnessContext(Expr e, boolean isNullnessCompletionForParen
|
||||
* Holds if a normal completion of `e` must be a matching completion. Thats is,
|
||||
* whether `e` determines a match in a `switch` statement.
|
||||
*/
|
||||
private predicate mustHaveMatchingCompletion(Expr e) {
|
||||
exists(SwitchStmt ss |
|
||||
e = ss.getAConstCase().getExpr()
|
||||
or
|
||||
e = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
|
||||
)
|
||||
private predicate mustHaveMatchingCompletion(SwitchStmt ss, Expr e) {
|
||||
e = ss.getAConstCase().getExpr()
|
||||
or
|
||||
e = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1252,6 +1252,13 @@ module Internal {
|
||||
not c instanceof GotoDefaultCompletion and
|
||||
not c instanceof GotoCaseCompletion
|
||||
or
|
||||
// Last case exits with a non-match
|
||||
exists(int last |
|
||||
last = max(int i | exists(ss.getCase(i))) |
|
||||
result = lastConstCaseNoMatch(ss.getCase(last), c) or
|
||||
result = lastTypeCaseNoMatch(ss.getCase(last), c)
|
||||
)
|
||||
or
|
||||
// Last statement exits with any non-break completion
|
||||
exists(int last |
|
||||
last = max(int i | exists(ss.getStmt(i))) |
|
||||
@@ -1262,8 +1269,7 @@ module Internal {
|
||||
or
|
||||
cfe = any(ConstCase cc |
|
||||
// Case expression exits with a non-match
|
||||
result = lastConstCaseExpr(cc, c) and
|
||||
c = any(MatchingCompletion mc | not mc.isMatch())
|
||||
result = lastConstCaseNoMatch(cc, c)
|
||||
or
|
||||
// Case expression exits abnormally
|
||||
result = lastConstCaseExpr(cc, c) and
|
||||
@@ -1275,8 +1281,7 @@ module Internal {
|
||||
or
|
||||
cfe = any(TypeCase tc |
|
||||
// Type test exits with a non-match
|
||||
result = tc.getTypeAccess() and
|
||||
c = any(MatchingCompletion mc | not mc.isMatch())
|
||||
result = lastTypeCaseNoMatch(tc, c)
|
||||
or
|
||||
// Condition exists with a `false` completion
|
||||
result = lastTypeCaseCondition(tc, c) and
|
||||
@@ -1405,6 +1410,17 @@ module Internal {
|
||||
)
|
||||
}
|
||||
|
||||
private ControlFlowElement lastConstCaseNoMatch(ConstCase cc, MatchingCompletion c) {
|
||||
result = lastConstCaseExpr(cc, c) and
|
||||
not c.isMatch()
|
||||
}
|
||||
|
||||
private ControlFlowElement lastTypeCaseNoMatch(TypeCase tc, MatchingCompletion c) {
|
||||
result = tc.getTypeAccess() and
|
||||
not c.isMatch() and
|
||||
c.isValidFor(result)
|
||||
}
|
||||
|
||||
pragma [noinline,nomagic]
|
||||
private ControlFlowElement lastStandardElementGetNonLastChildElement(StandardElement se, int i, Completion c) {
|
||||
result = last(se.getNonLastChildElement(i), c)
|
||||
@@ -1935,7 +1951,7 @@ module Internal {
|
||||
or
|
||||
// Flow from last element of switch expression to first element of first statement
|
||||
cfe = lastSwitchStmtCondition(ss, c) and
|
||||
c instanceof SimpleCompletion and
|
||||
c instanceof NormalCompletion and
|
||||
result = first(ss.getStmt(0))
|
||||
or
|
||||
// Flow from last element of non-`case` statement `i` to first element of statement `i+1`
|
||||
@@ -2006,6 +2022,7 @@ module Internal {
|
||||
c instanceof SimpleCompletion
|
||||
or
|
||||
cfe = tc.getTypeAccess() and
|
||||
c.isValidFor(cfe) and
|
||||
c = any(MatchingCompletion mc |
|
||||
if mc.isMatch() then
|
||||
if exists(tc.getVariableDeclExpr()) then
|
||||
@@ -2123,7 +2140,7 @@ module Internal {
|
||||
exists(ForeachStmt fs |
|
||||
// Flow from last element of iterator expression to emptiness test
|
||||
cfe = lastForeachStmtIterableExpr(fs, c) and
|
||||
c instanceof SimpleCompletion and
|
||||
c instanceof NormalCompletion and
|
||||
result = fs
|
||||
or
|
||||
// Flow from emptiness test to first element of variable declaration/loop body
|
||||
|
||||
@@ -70,7 +70,8 @@
|
||||
| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 2 |
|
||||
| ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 | 1 |
|
||||
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | 2 |
|
||||
| ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | 7 |
|
||||
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | exit M7 | 20 |
|
||||
| ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | 7 |
|
||||
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | exit M1 | 7 |
|
||||
| ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | exit M2 | 7 |
|
||||
| ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | exit M3 | 6 |
|
||||
@@ -102,14 +103,20 @@
|
||||
| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | exit ToBool | 7 |
|
||||
| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 4 |
|
||||
| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | exit Main | 19 |
|
||||
| Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:29:5:32 | access to parameter args | 3 |
|
||||
| Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 | 1 |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | 2 |
|
||||
| Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:11:27:11:30 | access to parameter args | 3 |
|
||||
| Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 | 1 |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; | 1 |
|
||||
| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:29:8:32 | access to parameter args | 3 |
|
||||
| Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 | 1 |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | 2 |
|
||||
| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:27:14:30 | access to parameter args | 3 |
|
||||
| Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 | 1 |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | 1 |
|
||||
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:27 | access to parameter e | 4 |
|
||||
| Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 | 1 |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | 1 |
|
||||
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | 2 |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | 1 |
|
||||
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | 1 |
|
||||
| Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | exit Initializers | 3 |
|
||||
| Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | exit M | 23 |
|
||||
| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 3 |
|
||||
@@ -129,13 +136,13 @@
|
||||
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | 1 |
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | 1 |
|
||||
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | 2 |
|
||||
| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" | 1 |
|
||||
| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 4 |
|
||||
| NullCoalescing.cs:11:9:11:10 | exit M5 | NullCoalescing.cs:11:9:11:10 | exit M5 | 1 |
|
||||
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 2 |
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | 1 |
|
||||
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | 1 |
|
||||
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | 1 |
|
||||
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | exit M6 | 21 |
|
||||
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:8:13:8:23 | ... is ... | 10 |
|
||||
| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | 6 |
|
||||
| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | ... is ... | 4 |
|
||||
@@ -184,7 +191,31 @@
|
||||
| Switch.cs:50:13:50:39 | case Boolean: | Switch.cs:50:18:50:21 | access to type Boolean | 2 |
|
||||
| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:38 | ... != ... | 3 |
|
||||
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | 1 |
|
||||
| Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | exit Throw | 4 |
|
||||
| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | exit M5 | 12 |
|
||||
| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:72:18:72:19 | "" | 9 |
|
||||
| Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 | 1 |
|
||||
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; | 1 |
|
||||
| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:81:18:81:18 | 1 | 6 |
|
||||
| Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 | 1 |
|
||||
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | 2 |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | 2 |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:23 | ... > ... | 4 |
|
||||
| Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; | 1 |
|
||||
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | 2 |
|
||||
| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | 2 |
|
||||
| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:95:18:95:20 | access to type Int32 | 6 |
|
||||
| Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 | 1 |
|
||||
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | 2 |
|
||||
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | 2 |
|
||||
| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:103:17:103:17 | access to parameter s | 4 |
|
||||
| Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 | 1 |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:19:103:25 | access to property Length | 1 |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | 2 |
|
||||
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | 2 |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | 2 |
|
||||
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | 2 |
|
||||
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:9:108:18 | return ...; | 3 |
|
||||
| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | exit Throw | 4 |
|
||||
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | ... is ... | 16 |
|
||||
| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | 1 |
|
||||
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 5 |
|
||||
@@ -219,12 +250,16 @@
|
||||
| cflow.cs:42:17:42:39 | ...; | cflow.cs:43:17:43:28 | goto case ...; | 5 |
|
||||
| cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:18:44:18 | 2 | 2 |
|
||||
| cflow.cs:45:17:45:39 | ...; | cflow.cs:46:17:46:28 | goto case ...; | 5 |
|
||||
| cflow.cs:47:13:47:19 | case ...: | cflow.cs:53:18:53:19 | 42 | 10 |
|
||||
| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | 2 |
|
||||
| cflow.cs:48:17:48:39 | ...; | cflow.cs:49:17:49:22 | break; | 4 |
|
||||
| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:53:18:53:19 | 42 | 4 |
|
||||
| cflow.cs:54:17:54:48 | ...; | cflow.cs:55:17:55:22 | break; | 4 |
|
||||
| cflow.cs:56:13:56:20 | default: | cflow.cs:58:17:58:22 | break; | 5 |
|
||||
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:23:63:33 | ... == ... | 12 |
|
||||
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:62:18:62:18 | 0 | 6 |
|
||||
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:33 | ... == ... | 6 |
|
||||
| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; | 2 |
|
||||
| cflow.cs:65:17:65:22 | break; | cflow.cs:67:9:67:17 | return ...; | 3 |
|
||||
| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | 1 |
|
||||
| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:9:67:17 | return ...; | 2 |
|
||||
| cflow.cs:70:18:70:18 | enter M | cflow.cs:72:13:72:21 | ... == ... | 6 |
|
||||
| cflow.cs:70:18:70:18 | exit M | cflow.cs:70:18:70:18 | exit M | 1 |
|
||||
| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | return ...; | 1 |
|
||||
|
||||
@@ -138,7 +138,8 @@
|
||||
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
|
||||
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| post | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| post | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
|
||||
| post | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 |
|
||||
| post | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
|
||||
| post | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| post | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
|
||||
| post | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
|
||||
@@ -184,24 +185,39 @@
|
||||
| post | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
|
||||
| post | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
|
||||
| post | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main |
|
||||
| post | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | enter M1 |
|
||||
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | enter M1 |
|
||||
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 |
|
||||
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:22:5:24 | String arg |
|
||||
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | enter M1 |
|
||||
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
|
||||
| post | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
|
||||
| post | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | enter M2 |
|
||||
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | enter M2 |
|
||||
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 |
|
||||
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:12:13:12:13 | ; |
|
||||
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | enter M2 |
|
||||
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
|
||||
| post | Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
|
||||
| post | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 |
|
||||
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | enter M1 |
|
||||
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 |
|
||||
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:22:8:24 | String arg |
|
||||
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | enter M1 |
|
||||
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
|
||||
| post | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
|
||||
| post | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 |
|
||||
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | enter M2 |
|
||||
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 |
|
||||
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:15:13:15:13 | ; |
|
||||
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | enter M2 |
|
||||
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
|
||||
| post | Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
|
||||
| post | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | enter M3 |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:22:20:22 | String x |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | enter M3 |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| post | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
|
||||
| post | Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| post | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | enter Initializers |
|
||||
| post | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | enter M |
|
||||
| post | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 |
|
||||
@@ -232,11 +248,9 @@
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:51:9:58 | ... ?? ... |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| post | NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... |
|
||||
| post | NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| post | NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | enter M5 |
|
||||
| post | NullCoalescing.cs:11:9:11:10 | exit M5 | NullCoalescing.cs:11:9:11:10 | enter M5 |
|
||||
| post | NullCoalescing.cs:11:9:11:10 | exit M5 | NullCoalescing.cs:11:9:11:10 | exit M5 |
|
||||
@@ -248,6 +262,7 @@
|
||||
| post | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
|
||||
| post | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
|
||||
| post | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
|
||||
| post | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 |
|
||||
| post | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:5:10:5:13 | enter Test |
|
||||
| post | Patterns.cs:9:9:11:9 | {...} | Patterns.cs:9:9:11:9 | {...} |
|
||||
| post | Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:14:18:9 | if (...) ... |
|
||||
@@ -344,7 +359,53 @@
|
||||
| post | Switch.cs:50:13:50:39 | case Boolean: | Switch.cs:50:13:50:39 | case Boolean: |
|
||||
| post | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o |
|
||||
| post | Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
|
||||
| post | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | enter Throw |
|
||||
| post | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 |
|
||||
| post | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 |
|
||||
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | enter M6 |
|
||||
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 |
|
||||
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:73:15:73:20 | break; |
|
||||
| post | Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
|
||||
| post | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | enter M7 |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:82:22:82:25 | true |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:83:13:83:20 | case ...: |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:85:17:85:22 | break; |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:86:22:86:25 | true |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:88:16:88:20 | false |
|
||||
| post | Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
|
||||
| post | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
|
||||
| post | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| post | Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
|
||||
| post | Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
|
||||
| post | Switch.cs:88:16:88:20 | false | Switch.cs:85:17:85:22 | break; |
|
||||
| post | Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false |
|
||||
| post | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | enter M8 |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:96:22:96:25 | true |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:98:16:98:20 | false |
|
||||
| post | Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
|
||||
| post | Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
|
||||
| post | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | enter M9 |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:105:13:105:20 | case ...: |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:105:29:105:29 | 0 |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:13:106:20 | case ...: |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:29:106:29 | 1 |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:108:17:108:17 | 1 |
|
||||
| post | Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:101:9:101:10 | enter M9 |
|
||||
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:13:105:20 | case ...: |
|
||||
| post | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
|
||||
| post | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
|
||||
| post | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
|
||||
| post | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
|
||||
| post | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw |
|
||||
| post | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
|
||||
| post | TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; |
|
||||
| post | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | enter M |
|
||||
@@ -451,11 +512,15 @@
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:44:13:44:19 | case ...: |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:47:13:47:19 | case ...: |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:48:17:48:39 | ...; |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:54:17:54:48 | ...; |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:56:13:56:20 | default: |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:65:17:65:22 | break; |
|
||||
| post | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| post | cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:39 | ...; |
|
||||
| post | cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | enter Switch |
|
||||
| post | cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:13:44:19 | case ...: |
|
||||
@@ -463,16 +528,27 @@
|
||||
| post | cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | enter Switch |
|
||||
| post | cflow.cs:47:13:47:19 | case ...: | cflow.cs:44:13:44:19 | case ...: |
|
||||
| post | cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:13:47:19 | case ...: |
|
||||
| post | cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:39 | ...; |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | enter Switch |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:44:13:44:19 | case ...: |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:47:13:47:19 | case ...: |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:48:17:48:39 | ...; |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| post | cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:48 | ...; |
|
||||
| post | cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | default: |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | enter Switch |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:44:13:44:19 | case ...: |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:47:13:47:19 | case ...: |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:48:17:48:39 | ...; |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:54:17:54:48 | ...; |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:56:13:56:20 | default: |
|
||||
| post | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| post | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| post | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| post | cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; |
|
||||
| post | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:65:17:65:22 | break; |
|
||||
| post | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| post | cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | enter M |
|
||||
| post | cflow.cs:70:18:70:18 | exit M | cflow.cs:70:18:70:18 | enter M |
|
||||
| post | cflow.cs:70:18:70:18 | exit M | cflow.cs:70:18:70:18 | exit M |
|
||||
@@ -1093,7 +1169,8 @@
|
||||
| pre | ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| pre | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
|
||||
| pre | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| pre | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
|
||||
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 |
|
||||
| pre | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
|
||||
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| pre | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
|
||||
| pre | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
|
||||
@@ -1139,24 +1216,37 @@
|
||||
| pre | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
|
||||
| pre | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
|
||||
| pre | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main |
|
||||
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | enter M1 |
|
||||
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | exit M1 |
|
||||
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:22:5:24 | String arg |
|
||||
| pre | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 |
|
||||
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 |
|
||||
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
|
||||
| pre | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
|
||||
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | enter M2 |
|
||||
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | exit M2 |
|
||||
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:12:13:12:13 | ; |
|
||||
| pre | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 |
|
||||
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 |
|
||||
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
|
||||
| pre | Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
|
||||
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 |
|
||||
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | exit M1 |
|
||||
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:22:8:24 | String arg |
|
||||
| pre | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 |
|
||||
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 |
|
||||
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
|
||||
| pre | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
|
||||
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 |
|
||||
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | exit M2 |
|
||||
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:15:13:15:13 | ; |
|
||||
| pre | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 |
|
||||
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 |
|
||||
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
|
||||
| pre | Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | exit M3 |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:22:20:22 | String x |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| pre | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 |
|
||||
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 |
|
||||
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
|
||||
| pre | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
|
||||
| pre | Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| pre | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | enter Initializers |
|
||||
| pre | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | enter M |
|
||||
| pre | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 |
|
||||
@@ -1186,13 +1276,10 @@
|
||||
| pre | NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:51:9:58 | ... ?? ... |
|
||||
| pre | NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| pre | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:12:9:13 | exit M4 |
|
||||
| pre | NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... |
|
||||
| pre | NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| pre | NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| pre | NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | enter M5 |
|
||||
| pre | NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | exit M5 |
|
||||
| pre | NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:58 | ... && ... |
|
||||
@@ -1205,6 +1292,7 @@
|
||||
| pre | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
|
||||
| pre | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
|
||||
| pre | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
|
||||
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 |
|
||||
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:5:10:5:13 | enter Test |
|
||||
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:9:9:11:9 | {...} |
|
||||
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:12:14:18:9 | if (...) ... |
|
||||
@@ -1380,7 +1468,63 @@
|
||||
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o |
|
||||
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:51:17:51:22 | break; |
|
||||
| pre | Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
|
||||
| pre | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | enter Throw |
|
||||
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 |
|
||||
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 |
|
||||
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | exit M6 |
|
||||
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:73:15:73:20 | break; |
|
||||
| pre | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 |
|
||||
| pre | Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | exit M7 |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:82:22:82:25 | true |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:83:13:83:20 | case ...: |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:85:17:85:22 | break; |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:86:22:86:25 | true |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:88:16:88:20 | false |
|
||||
| pre | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 |
|
||||
| pre | Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:85:17:85:22 | break; |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:86:22:86:25 | true |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:88:16:88:20 | false |
|
||||
| pre | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| pre | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:85:17:85:22 | break; |
|
||||
| pre | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:86:22:86:25 | true |
|
||||
| pre | Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
|
||||
| pre | Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
|
||||
| pre | Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false |
|
||||
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 |
|
||||
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | exit M8 |
|
||||
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:96:22:96:25 | true |
|
||||
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:98:16:98:20 | false |
|
||||
| pre | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 |
|
||||
| pre | Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
|
||||
| pre | Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | exit M9 |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:13:105:20 | case ...: |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:29:105:29 | 0 |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:13:106:20 | case ...: |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:29:106:29 | 1 |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:108:17:108:17 | 1 |
|
||||
| pre | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 |
|
||||
| pre | Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:101:9:101:10 | exit M9 |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:13:105:20 | case ...: |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:29:105:29 | 0 |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:106:29:106:29 | 1 |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:108:17:108:17 | 1 |
|
||||
| pre | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
|
||||
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
|
||||
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:29:106:29 | 1 |
|
||||
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:108:17:108:17 | 1 |
|
||||
| pre | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
|
||||
| pre | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
|
||||
| pre | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw |
|
||||
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
|
||||
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; |
|
||||
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:8:9:8:28 | ... ...; |
|
||||
@@ -1531,37 +1675,65 @@
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:44:13:44:19 | case ...: |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:45:17:45:39 | ...; |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:47:13:47:19 | case ...: |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:48:17:48:39 | ...; |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:54:17:54:48 | ...; |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:56:13:56:20 | default: |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:37:17:37:22 | enter Switch | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| pre | cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:39 | ...; |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:13:44:19 | case ...: |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:47:13:47:19 | case ...: |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:48:17:48:39 | ...; |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:54:17:54:48 | ...; |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:56:13:56:20 | default: |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:44:13:44:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:39 | ...; |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:13:47:19 | case ...: |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:48:17:48:39 | ...; |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:54:17:54:48 | ...; |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:56:13:56:20 | default: |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:39 | ...; |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:54:17:54:48 | ...; |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:56:13:56:20 | default: |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:48 | ...; |
|
||||
| pre | cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | default: |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | exit Switch |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException |
|
||||
| pre | cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | enter M |
|
||||
| pre | cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | exit M |
|
||||
| pre | cflow.cs:70:18:70:18 | enter M | cflow.cs:73:13:73:19 | return ...; |
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:25:17:25:37 | ...; | true |
|
||||
| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:25:17:25:37 | ...; | true |
|
||||
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | true |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | true |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | false |
|
||||
| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:25:7:25 | ; | true |
|
||||
| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:24:25:24 | access to local variable x | true |
|
||||
| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | false |
|
||||
|
||||
@@ -17,6 +17,13 @@ class ConditionalAccess
|
||||
}
|
||||
|
||||
string M6(string s1, string s2) => s1?.CommaJoinWith(s2);
|
||||
|
||||
void M7(int i)
|
||||
{
|
||||
var j = ((string)null)?.Length;
|
||||
var s = ((int?)i)?.ToString();
|
||||
s = ""?.CommaJoinWith(s);
|
||||
}
|
||||
}
|
||||
|
||||
static class Ext
|
||||
|
||||
@@ -82,6 +82,8 @@
|
||||
| 78 | 16 | ExitMethods.cs:78:16:78:25 | ... != ... | true | 78 | 29 | ExitMethods.cs:78:29:78:29 | 1 |
|
||||
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | false | 83 | 38 | ExitMethods.cs:83:38:83:38 | 1 |
|
||||
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | true | 83 | 34 | ExitMethods.cs:83:34:83:34 | 0 |
|
||||
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | false | 86 | 22 | Switch.cs:86:22:86:25 | true |
|
||||
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | true | 85 | 17 | Switch.cs:85:17:85:22 | break; |
|
||||
| 86 | 13 | cflow.cs:86:13:86:21 | ... != ... | false | 84 | 18 | cflow.cs:84:18:84:19 | exit M2 |
|
||||
| 86 | 13 | cflow.cs:86:13:86:21 | ... != ... | true | 86 | 26 | cflow.cs:86:26:86:26 | access to parameter s |
|
||||
| 86 | 26 | cflow.cs:86:26:86:37 | ... > ... | false | 84 | 18 | cflow.cs:84:18:84:19 | exit M2 |
|
||||
|
||||
@@ -218,12 +218,31 @@
|
||||
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith |
|
||||
| post | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | enter M6 |
|
||||
| post | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| post | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | ConditionalAccess.cs:24:70:24:83 | ... + ... |
|
||||
| post | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
|
||||
| post | ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:75:24:78 | ", " |
|
||||
| post | ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
|
||||
| post | ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| post | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:78 | ... + ... |
|
||||
| post | ConditionalAccess.cs:21:10:21:11 | exit M7 | ConditionalAccess.cs:25:9:25:32 | ... = ... |
|
||||
| post | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:21:10:21:11 | enter M7 |
|
||||
| post | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:22:5:26:5 | {...} |
|
||||
| post | ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:9:23:39 | ... ...; |
|
||||
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:18:23:29 | (...) ... |
|
||||
| post | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null |
|
||||
| post | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
|
||||
| post | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
|
||||
| post | ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:9:24:38 | ... ...; |
|
||||
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
|
||||
| post | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
|
||||
| post | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
|
||||
| post | ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:18:24:24 | (...) ... |
|
||||
| post | ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:33 | ...; |
|
||||
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith |
|
||||
| post | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... |
|
||||
| post | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
|
||||
| post | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
|
||||
| post | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" |
|
||||
| post | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | ConditionalAccess.cs:31:70:31:83 | ... + ... |
|
||||
| post | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
|
||||
| post | ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:75:31:78 | ", " |
|
||||
| post | ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
|
||||
| post | ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| post | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:78 | ... + ... |
|
||||
| post | ExitMethods.cs:6:10:6:11 | exit M1 | ExitMethods.cs:9:9:9:15 | return ...; |
|
||||
| post | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:6:10:6:11 | enter M1 |
|
||||
| post | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
|
||||
@@ -342,17 +361,25 @@
|
||||
| post | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:24:9:24:45 | call to method ToBool |
|
||||
| post | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:9:25:14 | "true" |
|
||||
| post | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | access to method Parse |
|
||||
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:4:5:7:5 | {...} | Foreach.cs:3:10:3:11 | enter M1 |
|
||||
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:29:5:32 | access to parameter args |
|
||||
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:6:13:6:13 | ; |
|
||||
| post | Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:4:5:7:5 | {...} |
|
||||
| post | Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:22:5:24 | String arg |
|
||||
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:10:5:13:5 | {...} | Foreach.cs:9:10:9:11 | enter M2 |
|
||||
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:27:11:30 | access to parameter args |
|
||||
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
|
||||
| post | Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:10:5:13:5 | {...} |
|
||||
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:6:10:6:11 | enter M1 |
|
||||
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args |
|
||||
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:9:13:9:13 | ; |
|
||||
| post | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:7:5:10:5 | {...} |
|
||||
| post | Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:22:8:24 | String arg |
|
||||
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:12:10:12:11 | enter M2 |
|
||||
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args |
|
||||
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
|
||||
| post | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:13:5:16:5 | {...} |
|
||||
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
|
||||
| post | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:18:10:18:11 | enter M3 |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:21:11:21:11 | ; |
|
||||
| post | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:68 | ... ?? ... |
|
||||
| post | Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:19:5:22:5 | {...} |
|
||||
| post | Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:22:20:22 | String x |
|
||||
| post | Initializers.cs:6:5:6:16 | exit Initializers | Initializers.cs:6:28:6:30 | {...} |
|
||||
| post | Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | enter Initializers |
|
||||
| post | Initializers.cs:8:10:8:10 | exit M | Initializers.cs:11:13:11:63 | Initializers[] iz = ... |
|
||||
@@ -396,7 +423,6 @@
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:51:9:52 | "" |
|
||||
| post | NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| post | NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | enter M4 |
|
||||
| post | NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... |
|
||||
| post | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... |
|
||||
@@ -407,6 +433,26 @@
|
||||
| post | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | ... ?? ... |
|
||||
| post | NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
|
||||
| post | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | ... && ... |
|
||||
| post | NullCoalescing.cs:13:10:13:11 | exit M6 | NullCoalescing.cs:17:9:17:24 | ... = ... |
|
||||
| post | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:13:10:13:11 | enter M6 |
|
||||
| post | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:14:5:18:5 | {...} |
|
||||
| post | NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:9:15:32 | ... ...; |
|
||||
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:31:15:31 | 0 |
|
||||
| post | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null |
|
||||
| post | NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:13:15:13 | access to local variable j |
|
||||
| post | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
|
||||
| post | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:26 | (...) ... |
|
||||
| post | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
|
||||
| post | NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:9:16:26 | ... ...; |
|
||||
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:18 | "" |
|
||||
| post | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
|
||||
| post | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:13:16:13 | access to local variable s |
|
||||
| post | NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:25 | ...; |
|
||||
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:13:17:19 | (...) ... |
|
||||
| post | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:16:13:16:25 | String s = ... |
|
||||
| post | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
|
||||
| post | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:9 | access to local variable j |
|
||||
| post | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
|
||||
| post | Patterns.cs:5:10:5:13 | exit Test | Patterns.cs:40:17:40:17 | access to local variable o |
|
||||
| post | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:5:10:5:13 | enter Test |
|
||||
| post | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:6:5:43:5 | {...} |
|
||||
@@ -609,9 +655,69 @@
|
||||
| post | Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:13:50:39 | case Boolean: |
|
||||
| post | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:35:50:38 | null |
|
||||
| post | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:30 | access to parameter o |
|
||||
| post | Switch.cs:55:17:55:21 | exit Throw | Switch.cs:55:28:55:48 | throw ... |
|
||||
| post | Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:34:55:48 | object creation of type Exception |
|
||||
| post | Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:17:55:21 | enter Throw |
|
||||
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:62:15:62:20 | break; |
|
||||
| post | Switch.cs:56:5:64:5 | {...} | Switch.cs:55:10:55:11 | enter M5 |
|
||||
| post | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:56:5:64:5 | {...} |
|
||||
| post | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:9:63:9 | switch (...) {...} |
|
||||
| post | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:21:57:21 | 2 |
|
||||
| post | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:17 | 1 |
|
||||
| post | Switch.cs:59:13:59:20 | case ...: | Switch.cs:57:17:57:21 | ... + ... |
|
||||
| post | Switch.cs:59:18:59:18 | 2 | Switch.cs:59:13:59:20 | case ...: |
|
||||
| post | Switch.cs:61:13:61:20 | case ...: | Switch.cs:59:18:59:18 | 2 |
|
||||
| post | Switch.cs:61:18:61:18 | 3 | Switch.cs:61:13:61:20 | case ...: |
|
||||
| post | Switch.cs:62:15:62:20 | break; | Switch.cs:61:18:61:18 | 3 |
|
||||
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:72:18:72:19 | "" |
|
||||
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:73:15:73:20 | break; |
|
||||
| post | Switch.cs:67:5:75:5 | {...} | Switch.cs:66:10:66:11 | enter M6 |
|
||||
| post | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:67:5:75:5 | {...} |
|
||||
| post | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s |
|
||||
| post | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:9:74:9 | switch (...) {...} |
|
||||
| post | Switch.cs:70:13:70:24 | case Int32: | Switch.cs:68:17:68:25 | (...) ... |
|
||||
| post | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:13:70:24 | case Int32: |
|
||||
| post | Switch.cs:72:13:72:21 | case ...: | Switch.cs:70:18:70:20 | access to type Int32 |
|
||||
| post | Switch.cs:72:18:72:19 | "" | Switch.cs:72:13:72:21 | case ...: |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:82:15:82:26 | return ...; |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:86:15:86:26 | return ...; |
|
||||
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:88:9:88:21 | return ...; |
|
||||
| post | Switch.cs:78:5:89:5 | {...} | Switch.cs:77:10:77:11 | enter M7 |
|
||||
| post | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:78:5:89:5 | {...} |
|
||||
| post | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:9:87:9 | switch (...) {...} |
|
||||
| post | Switch.cs:81:13:81:20 | case ...: | Switch.cs:79:17:79:17 | access to parameter i |
|
||||
| post | Switch.cs:81:18:81:18 | 1 | Switch.cs:81:13:81:20 | case ...: |
|
||||
| post | Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:22:82:25 | true |
|
||||
| post | Switch.cs:83:18:83:18 | 2 | Switch.cs:83:13:83:20 | case ...: |
|
||||
| post | Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| post | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:23:84:23 | 2 |
|
||||
| post | Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:19 | access to parameter j |
|
||||
| post | Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:22:86:25 | true |
|
||||
| post | Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false |
|
||||
| post | Switch.cs:88:16:88:20 | false | Switch.cs:85:17:85:22 | break; |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:96:15:96:26 | return ...; |
|
||||
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:98:9:98:21 | return ...; |
|
||||
| post | Switch.cs:92:5:99:5 | {...} | Switch.cs:91:10:91:11 | enter M8 |
|
||||
| post | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:92:5:99:5 | {...} |
|
||||
| post | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:9:97:9 | switch (...) {...} |
|
||||
| post | Switch.cs:95:13:95:24 | case Int32: | Switch.cs:93:17:93:17 | access to parameter o |
|
||||
| post | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:13:95:24 | case Int32: |
|
||||
| post | Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:22:96:25 | true |
|
||||
| post | Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:105:22:105:30 | return ...; |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:22:106:30 | return ...; |
|
||||
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:108:9:108:18 | return ...; |
|
||||
| post | Switch.cs:102:5:109:5 | {...} | Switch.cs:101:9:101:10 | enter M9 |
|
||||
| post | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:102:5:109:5 | {...} |
|
||||
| post | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:9:107:9 | switch (...) {...} |
|
||||
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:103:17:103:17 | access to parameter s |
|
||||
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| post | Switch.cs:105:18:105:18 | 0 | Switch.cs:105:13:105:20 | case ...: |
|
||||
| post | Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:29:105:29 | 0 |
|
||||
| post | Switch.cs:106:18:106:18 | 1 | Switch.cs:106:13:106:20 | case ...: |
|
||||
| post | Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:29:106:29 | 1 |
|
||||
| post | Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:16:108:17 | -... |
|
||||
| post | Switch.cs:108:16:108:17 | -... | Switch.cs:108:17:108:17 | 1 |
|
||||
| post | Switch.cs:111:17:111:21 | exit Throw | Switch.cs:111:28:111:48 | throw ... |
|
||||
| post | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception |
|
||||
| post | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:17:111:21 | enter Throw |
|
||||
| post | TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:8:13:8:27 | Type t = ... |
|
||||
| post | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | enter M |
|
||||
| post | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:4:5:9:5 | {...} |
|
||||
@@ -784,9 +890,9 @@
|
||||
| post | cflow.cs:47:13:47:19 | case ...: | cflow.cs:44:18:44:18 | 2 |
|
||||
| post | cflow.cs:47:18:47:18 | 3 | cflow.cs:47:13:47:19 | case ...: |
|
||||
| post | cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:48:35:48:37 | "3" |
|
||||
| post | cflow.cs:48:17:48:39 | ...; | cflow.cs:47:18:47:18 | 3 |
|
||||
| post | cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:39 | ...; |
|
||||
| post | cflow.cs:49:17:49:22 | break; | cflow.cs:48:17:48:38 | call to method WriteLine |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:47:18:47:18 | 3 |
|
||||
| post | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:49:17:49:22 | break; |
|
||||
| post | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| post | cflow.cs:53:13:53:20 | case ...: | cflow.cs:51:17:51:17 | access to parameter a |
|
||||
@@ -805,7 +911,6 @@
|
||||
| post | cflow.cs:60:27:60:31 | this access | cflow.cs:60:9:66:9 | switch (...) {...} |
|
||||
| post | cflow.cs:62:13:62:19 | case ...: | cflow.cs:60:17:60:32 | call to method Parse |
|
||||
| post | cflow.cs:62:18:62:18 | 0 | cflow.cs:62:13:62:19 | case ...: |
|
||||
| post | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:62:18:62:18 | 0 |
|
||||
| post | cflow.cs:63:21:63:34 | !... | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| post | cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | this access |
|
||||
| post | cflow.cs:63:23:63:27 | this access | cflow.cs:63:21:63:34 | !... |
|
||||
@@ -1806,12 +1911,31 @@
|
||||
| pre | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
|
||||
| pre | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| pre | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith |
|
||||
| pre | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| pre | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " |
|
||||
| pre | ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
|
||||
| pre | ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith |
|
||||
| pre | ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... |
|
||||
| pre | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... |
|
||||
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
|
||||
| pre | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; |
|
||||
| pre | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
|
||||
| pre | ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null |
|
||||
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; |
|
||||
| pre | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
|
||||
| pre | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... |
|
||||
| pre | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
|
||||
| pre | ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
|
||||
| pre | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; |
|
||||
| pre | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
|
||||
| pre | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... |
|
||||
| pre | ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... |
|
||||
| pre | ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" |
|
||||
| pre | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 |
|
||||
| pre | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
|
||||
| pre | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
|
||||
| pre | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... |
|
||||
| pre | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith |
|
||||
| pre | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| pre | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " |
|
||||
| pre | ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
|
||||
| pre | ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith |
|
||||
| pre | ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... |
|
||||
| pre | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... |
|
||||
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| pre | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; |
|
||||
| pre | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; |
|
||||
@@ -1930,17 +2054,25 @@
|
||||
| pre | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" |
|
||||
| pre | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> |
|
||||
| pre | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool |
|
||||
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:4:5:7:5 | {...} |
|
||||
| pre | Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args |
|
||||
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 |
|
||||
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
|
||||
| pre | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; |
|
||||
| pre | Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:10:5:13:5 | {...} |
|
||||
| pre | Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args |
|
||||
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 |
|
||||
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
|
||||
| pre | Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} |
|
||||
| pre | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args |
|
||||
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 |
|
||||
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
|
||||
| pre | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; |
|
||||
| pre | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} |
|
||||
| pre | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args |
|
||||
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 |
|
||||
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
|
||||
| pre | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
|
||||
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} |
|
||||
| pre | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... |
|
||||
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 |
|
||||
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
|
||||
| pre | Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; |
|
||||
| pre | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray |
|
||||
| pre | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| pre | Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e |
|
||||
| pre | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:28:6:30 | {...} |
|
||||
| pre | Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | exit Initializers |
|
||||
| pre | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:9:5:12:5 | {...} |
|
||||
@@ -1986,7 +2118,6 @@
|
||||
| pre | NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:41:9:41 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:45:9:45 | access to parameter s |
|
||||
| pre | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b |
|
||||
| pre | NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:57:9:58 | "" |
|
||||
| pre | NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" |
|
||||
| pre | NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
|
||||
| pre | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... |
|
||||
@@ -1996,6 +2127,26 @@
|
||||
| pre | NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
|
||||
| pre | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
|
||||
| pre | NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 |
|
||||
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} |
|
||||
| pre | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; |
|
||||
| pre | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j |
|
||||
| pre | NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
|
||||
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; |
|
||||
| pre | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 |
|
||||
| pre | NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null |
|
||||
| pre | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... |
|
||||
| pre | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
|
||||
| pre | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s |
|
||||
| pre | NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
|
||||
| pre | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; |
|
||||
| pre | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... |
|
||||
| pre | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" |
|
||||
| pre | NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
|
||||
| pre | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 |
|
||||
| pre | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j |
|
||||
| pre | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
|
||||
| pre | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
|
||||
| pre | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... |
|
||||
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:6:5:43:5 | {...} |
|
||||
| pre | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; |
|
||||
| pre | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o |
|
||||
@@ -2211,9 +2362,72 @@
|
||||
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null |
|
||||
| pre | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; |
|
||||
| pre | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... |
|
||||
| pre | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:34:55:48 | object creation of type Exception |
|
||||
| pre | Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:17:55:21 | exit Throw |
|
||||
| pre | Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... |
|
||||
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} |
|
||||
| pre | Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} |
|
||||
| pre | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 |
|
||||
| pre | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 |
|
||||
| pre | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: |
|
||||
| pre | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... |
|
||||
| pre | Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 |
|
||||
| pre | Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: |
|
||||
| pre | Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 |
|
||||
| pre | Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; |
|
||||
| pre | Switch.cs:62:15:62:20 | break; | Switch.cs:55:10:55:11 | exit M5 |
|
||||
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} |
|
||||
| pre | Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} |
|
||||
| pre | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s |
|
||||
| pre | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: |
|
||||
| pre | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... |
|
||||
| pre | Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 |
|
||||
| pre | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: |
|
||||
| pre | Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" |
|
||||
| pre | Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | exit M6 |
|
||||
| pre | Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; |
|
||||
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} |
|
||||
| pre | Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} |
|
||||
| pre | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i |
|
||||
| pre | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: |
|
||||
| pre | Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 |
|
||||
| pre | Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true |
|
||||
| pre | Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: |
|
||||
| pre | Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; |
|
||||
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 |
|
||||
| pre | Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| pre | Switch.cs:83:18:83:18 | 2 | Switch.cs:88:16:88:20 | false |
|
||||
| pre | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j |
|
||||
| pre | Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 |
|
||||
| pre | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; |
|
||||
| pre | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true |
|
||||
| pre | Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... |
|
||||
| pre | Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; |
|
||||
| pre | Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; |
|
||||
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} |
|
||||
| pre | Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} |
|
||||
| pre | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o |
|
||||
| pre | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: |
|
||||
| pre | Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 |
|
||||
| pre | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true |
|
||||
| pre | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false |
|
||||
| pre | Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; |
|
||||
| pre | Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; |
|
||||
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} |
|
||||
| pre | Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} |
|
||||
| pre | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s |
|
||||
| pre | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length |
|
||||
| pre | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:105:13:105:20 | case ...: |
|
||||
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 |
|
||||
| pre | Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 |
|
||||
| pre | Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: |
|
||||
| pre | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; |
|
||||
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 |
|
||||
| pre | Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 |
|
||||
| pre | Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 |
|
||||
| pre | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; |
|
||||
| pre | Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; |
|
||||
| pre | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... |
|
||||
| pre | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception |
|
||||
| pre | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw |
|
||||
| pre | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... |
|
||||
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} |
|
||||
| pre | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; |
|
||||
| pre | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s |
|
||||
@@ -2388,10 +2602,10 @@
|
||||
| pre | cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | goto case ...; |
|
||||
| pre | cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 |
|
||||
| pre | cflow.cs:47:18:47:18 | 3 | cflow.cs:48:17:48:39 | ...; |
|
||||
| pre | cflow.cs:47:18:47:18 | 3 | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:49:17:49:22 | break; |
|
||||
| pre | cflow.cs:48:17:48:39 | ...; | cflow.cs:48:35:48:37 | "3" |
|
||||
| pre | cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | call to method WriteLine |
|
||||
| pre | cflow.cs:49:17:49:22 | break; | cflow.cs:51:9:59:9 | switch (...) {...} |
|
||||
| pre | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:17:51:17 | access to parameter a |
|
||||
| pre | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:53:13:53:20 | case ...: |
|
||||
| pre | cflow.cs:53:13:53:20 | case ...: | cflow.cs:53:18:53:19 | 42 |
|
||||
@@ -2410,6 +2624,7 @@
|
||||
| pre | cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | access to field Field |
|
||||
| pre | cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 |
|
||||
| pre | cflow.cs:62:18:62:18 | 0 | cflow.cs:63:17:64:55 | if (...) ... |
|
||||
| pre | cflow.cs:62:18:62:18 | 0 | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... |
|
||||
| pre | cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:27 | this access |
|
||||
| pre | cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:32:63:33 | "" |
|
||||
@@ -2418,7 +2633,6 @@
|
||||
| pre | cflow.cs:63:23:63:33 | ... == ... | cflow.cs:65:17:65:22 | break; |
|
||||
| pre | cflow.cs:63:32:63:33 | "" | cflow.cs:63:23:63:33 | ... == ... |
|
||||
| pre | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; |
|
||||
| pre | cflow.cs:65:17:65:22 | break; | cflow.cs:67:16:67:16 | access to parameter a |
|
||||
| pre | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:9:67:17 | return ...; |
|
||||
| pre | cflow.cs:70:18:70:18 | enter M | cflow.cs:71:5:82:5 | {...} |
|
||||
| pre | cflow.cs:71:5:82:5 | {...} | cflow.cs:72:9:73:19 | if (...) ... |
|
||||
|
||||
@@ -174,10 +174,27 @@
|
||||
| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | return ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | null |
|
||||
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... | semmle.label | successor |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:20:8:23 | true | semmle.label | successor |
|
||||
@@ -268,15 +285,25 @@
|
||||
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | semmle.label | successor |
|
||||
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | semmle.label | successor |
|
||||
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool | semmle.label | successor |
|
||||
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg | semmle.label | non-empty |
|
||||
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | semmle.label | successor |
|
||||
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; | semmle.label | non-empty |
|
||||
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | semmle.label | non-empty |
|
||||
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | semmle.label | successor |
|
||||
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | semmle.label | non-empty |
|
||||
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... | semmle.label | successor |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | semmle.label | non-empty |
|
||||
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | semmle.label | successor |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray | semmle.label | non-null |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
|
||||
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e | semmle.label | successor |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | non-null |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
|
||||
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:10:9:10:54 | ... ...; | semmle.label | successor |
|
||||
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:13:10:13 | access to local variable i | semmle.label | successor |
|
||||
| Initializers.cs:10:13:10:13 | access to local variable i | Initializers.cs:10:34:10:35 | "" | semmle.label | successor |
|
||||
@@ -315,7 +342,6 @@
|
||||
| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b | semmle.label | successor |
|
||||
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:51:9:58 | ... ?? ... | semmle.label | null |
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:51:9:58 | ... ?? ... | semmle.label | null |
|
||||
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:57:9:58 | "" | semmle.label | null |
|
||||
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:51:11:58 | ... && ... | semmle.label | null |
|
||||
@@ -327,6 +353,24 @@
|
||||
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:64:11:64 | 0 | semmle.label | true |
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:68:11:68 | 1 | semmle.label | false |
|
||||
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | semmle.label | null |
|
||||
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | non-null |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | non-null |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | semmle.label | successor |
|
||||
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | semmle.label | successor |
|
||||
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o | semmle.label | successor |
|
||||
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:20:7:23 | null | semmle.label | successor |
|
||||
@@ -544,7 +588,65 @@
|
||||
| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null | semmle.label | successor |
|
||||
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | semmle.label | true |
|
||||
| Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | semmle.label | successor |
|
||||
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... | semmle.label | successor |
|
||||
| Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | semmle.label | successor |
|
||||
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | semmle.label | successor |
|
||||
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | semmle.label | successor |
|
||||
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | semmle.label | successor |
|
||||
| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | semmle.label | successor |
|
||||
| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; | semmle.label | match |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | semmle.label | successor |
|
||||
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: | semmle.label | successor |
|
||||
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | semmle.label | successor |
|
||||
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | semmle.label | successor |
|
||||
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | semmle.label | successor |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; | semmle.label | match |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | semmle.label | successor |
|
||||
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | semmle.label | successor |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true | semmle.label | match |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | semmle.label | successor |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... | semmle.label | match |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:88:16:88:20 | false | semmle.label | no-match |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j | semmle.label | successor |
|
||||
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 | semmle.label | successor |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | semmle.label | true |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | semmle.label | false |
|
||||
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... | semmle.label | successor |
|
||||
| Switch.cs:85:17:85:22 | break; | Switch.cs:88:16:88:20 | false | semmle.label | break |
|
||||
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | semmle.label | successor |
|
||||
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: | semmle.label | successor |
|
||||
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | semmle.label | successor |
|
||||
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true | semmle.label | match |
|
||||
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | semmle.label | no-match |
|
||||
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | semmle.label | successor |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length | semmle.label | non-null |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:105:13:105:20 | case ...: | semmle.label | null |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:105:13:105:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | semmle.label | successor |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 | semmle.label | match |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | semmle.label | successor |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 | semmle.label | match |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | semmle.label | no-match |
|
||||
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | semmle.label | successor |
|
||||
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | semmle.label | successor |
|
||||
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | semmle.label | successor |
|
||||
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s | semmle.label | successor |
|
||||
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:25:5:25 | access to parameter o | semmle.label | successor |
|
||||
@@ -721,6 +823,7 @@
|
||||
| cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | goto case ...; | semmle.label | successor |
|
||||
| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | semmle.label | successor |
|
||||
| cflow.cs:47:18:47:18 | 3 | cflow.cs:48:17:48:39 | ...; | semmle.label | match |
|
||||
| cflow.cs:47:18:47:18 | 3 | cflow.cs:51:9:59:9 | switch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:49:17:49:22 | break; | semmle.label | successor |
|
||||
| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:35:48:37 | "3" | semmle.label | successor |
|
||||
| cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | call to method WriteLine | semmle.label | successor |
|
||||
@@ -745,6 +848,7 @@
|
||||
| cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | access to field Field | semmle.label | successor |
|
||||
| cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 | semmle.label | successor |
|
||||
| cflow.cs:62:18:62:18 | 0 | cflow.cs:63:17:64:55 | if (...) ... | semmle.label | match |
|
||||
| cflow.cs:62:18:62:18 | 0 | cflow.cs:67:16:67:16 | access to parameter a | semmle.label | no-match |
|
||||
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... | semmle.label | successor |
|
||||
| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:27 | this access | semmle.label | successor |
|
||||
| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:32:63:33 | "" | semmle.label | successor |
|
||||
|
||||
@@ -194,11 +194,30 @@
|
||||
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
|
||||
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:75:24:78 | ", " |
|
||||
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
|
||||
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:22:5:26:5 | {...} |
|
||||
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:9:23:39 | ... ...; |
|
||||
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
|
||||
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
|
||||
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null |
|
||||
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null |
|
||||
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:26:23:29 | null |
|
||||
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:9:24:38 | ... ...; |
|
||||
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
|
||||
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
|
||||
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
|
||||
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
|
||||
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
|
||||
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
|
||||
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
|
||||
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:33 | ...; |
|
||||
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" |
|
||||
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" |
|
||||
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
|
||||
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:75:31:78 | ", " |
|
||||
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:25 | ...; |
|
||||
@@ -307,15 +326,23 @@
|
||||
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:34 | ...; |
|
||||
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse |
|
||||
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | access to method Parse |
|
||||
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:4:5:7:5 | {...} |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:29:5:32 | access to parameter args |
|
||||
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
|
||||
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:29:5:32 | access to parameter args |
|
||||
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:6:13:6:13 | ; |
|
||||
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:10:5:13:5 | {...} |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:27:11:30 | access to parameter args |
|
||||
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:27:11:30 | access to parameter args |
|
||||
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
|
||||
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:7:5:10:5 | {...} |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args |
|
||||
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
|
||||
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args |
|
||||
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; |
|
||||
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:13:5:16:5 | {...} |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args |
|
||||
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args |
|
||||
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
|
||||
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:19:5:22:5 | {...} |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... |
|
||||
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e |
|
||||
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e |
|
||||
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
|
||||
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; |
|
||||
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:28:6:30 | {...} |
|
||||
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:9:5:12:5 | {...} |
|
||||
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:9:10:54 | ... ...; |
|
||||
@@ -369,6 +396,27 @@
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
|
||||
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
|
||||
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
|
||||
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:14:5:18:5 | {...} |
|
||||
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:9:15:32 | ... ...; |
|
||||
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j |
|
||||
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:13 | access to local variable j |
|
||||
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null |
|
||||
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
|
||||
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null |
|
||||
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 |
|
||||
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; |
|
||||
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:13 | access to local variable s |
|
||||
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:13 | access to local variable s |
|
||||
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
|
||||
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" |
|
||||
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:9 | access to local variable j |
|
||||
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:9 | access to local variable j |
|
||||
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:25 | ...; |
|
||||
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
|
||||
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i |
|
||||
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 |
|
||||
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:6:5:43:5 | {...} |
|
||||
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:9:7:24 | ... ...; |
|
||||
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:16 | access to local variable o |
|
||||
@@ -574,8 +622,69 @@
|
||||
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:30 | access to parameter o |
|
||||
| Switch.cs:50:35:50:38 | null | Switch.cs:50:35:50:38 | null |
|
||||
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
|
||||
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:34:55:48 | object creation of type Exception |
|
||||
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:34:55:48 | object creation of type Exception |
|
||||
| Switch.cs:56:5:64:5 | {...} | Switch.cs:56:5:64:5 | {...} |
|
||||
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:9:63:9 | switch (...) {...} |
|
||||
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:17 | 1 |
|
||||
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:17 | 1 |
|
||||
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:21:57:21 | 2 |
|
||||
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:13:59:20 | case ...: |
|
||||
| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 |
|
||||
| Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; |
|
||||
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:13:61:20 | case ...: |
|
||||
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 |
|
||||
| Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:67:5:75:5 | {...} |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:9:74:9 | switch (...) {...} |
|
||||
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s |
|
||||
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:25:68:25 | access to parameter s |
|
||||
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:13:70:24 | case Int32: |
|
||||
| Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; |
|
||||
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:13:72:21 | case ...: |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" |
|
||||
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:78:5:89:5 | {...} |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:9:87:9 | switch (...) {...} |
|
||||
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i |
|
||||
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:13:81:20 | case ...: |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 |
|
||||
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:22:82:25 | true |
|
||||
| Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:15:85:22 | if (...) ... |
|
||||
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:19:84:19 | access to parameter j |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:19 | access to parameter j |
|
||||
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:23:84:23 | 2 |
|
||||
| Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
|
||||
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:22:86:25 | true |
|
||||
| Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
|
||||
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false |
|
||||
| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false |
|
||||
| Switch.cs:92:5:99:5 | {...} | Switch.cs:92:5:99:5 | {...} |
|
||||
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:9:97:9 | switch (...) {...} |
|
||||
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o |
|
||||
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:13:95:24 | case Int32: |
|
||||
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:22:96:25 | true |
|
||||
| Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
|
||||
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false |
|
||||
| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:102:5:109:5 | {...} |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:9:107:9 | switch (...) {...} |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:13:105:20 | case ...: |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 |
|
||||
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:29:105:29 | 0 |
|
||||
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 |
|
||||
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:29:106:29 | 1 |
|
||||
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
|
||||
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:17:108:17 | 1 |
|
||||
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:17:108:17 | 1 |
|
||||
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
|
||||
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception |
|
||||
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception |
|
||||
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} |
|
||||
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:9:5:26 | ... ...; |
|
||||
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s |
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... |
|
||||
| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:12:5:17:5 | {...} |
|
||||
| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:24:26:24:38 | CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
|
||||
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
|
||||
| ConditionalAccess.cs:31:26:31:38 | CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
|
||||
| ExitMethods.cs:6:10:6:11 | M1 | ExitMethods.cs:7:5:10:5 | {...} |
|
||||
| ExitMethods.cs:12:10:12:11 | M2 | ExitMethods.cs:13:5:16:5 | {...} |
|
||||
| ExitMethods.cs:18:10:18:11 | M3 | ExitMethods.cs:19:5:22:5 | {...} |
|
||||
@@ -38,8 +39,9 @@
|
||||
| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} |
|
||||
| Extensions.cs:15:23:15:33 | CallToInt32 | Extensions.cs:15:48:15:50 | "0" |
|
||||
| Extensions.cs:20:17:20:20 | Main | Extensions.cs:21:5:26:5 | {...} |
|
||||
| Foreach.cs:3:10:3:11 | M1 | Foreach.cs:4:5:7:5 | {...} |
|
||||
| Foreach.cs:9:10:9:11 | M2 | Foreach.cs:10:5:13:5 | {...} |
|
||||
| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:7:5:10:5 | {...} |
|
||||
| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:13:5:16:5 | {...} |
|
||||
| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:19:5:22:5 | {...} |
|
||||
| Initializers.cs:6:5:6:16 | Initializers | Initializers.cs:6:28:6:30 | {...} |
|
||||
| Initializers.cs:8:10:8:10 | M | Initializers.cs:9:5:12:5 | {...} |
|
||||
| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:28 | ... ?? ... |
|
||||
@@ -47,6 +49,7 @@
|
||||
| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:53 | ... ?? ... |
|
||||
| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:36:9:58 | ... ?? ... |
|
||||
| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
|
||||
| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} |
|
||||
| Patterns.cs:5:10:5:13 | Test | Patterns.cs:6:5:43:5 | {...} |
|
||||
| Qualifiers.cs:7:16:7:21 | Method | Qualifiers.cs:7:28:7:31 | null |
|
||||
| Qualifiers.cs:8:23:8:34 | StaticMethod | Qualifiers.cs:8:41:8:44 | null |
|
||||
@@ -55,7 +58,12 @@
|
||||
| Switch.cs:10:10:10:11 | M2 | Switch.cs:11:5:33:5 | {...} |
|
||||
| Switch.cs:35:10:35:11 | M3 | Switch.cs:36:5:42:5 | {...} |
|
||||
| Switch.cs:44:10:44:11 | M4 | Switch.cs:45:5:53:5 | {...} |
|
||||
| Switch.cs:55:17:55:21 | Throw | Switch.cs:55:34:55:48 | object creation of type Exception |
|
||||
| Switch.cs:55:10:55:11 | M5 | Switch.cs:56:5:64:5 | {...} |
|
||||
| Switch.cs:66:10:66:11 | M6 | Switch.cs:67:5:75:5 | {...} |
|
||||
| Switch.cs:77:10:77:11 | M7 | Switch.cs:78:5:89:5 | {...} |
|
||||
| Switch.cs:91:10:91:11 | M8 | Switch.cs:92:5:99:5 | {...} |
|
||||
| Switch.cs:101:9:101:10 | M9 | Switch.cs:102:5:109:5 | {...} |
|
||||
| Switch.cs:111:17:111:21 | Throw | Switch.cs:111:34:111:48 | object creation of type Exception |
|
||||
| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} |
|
||||
| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:6:5:11:5 | {...} |
|
||||
| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:14:5:17:5 | {...} |
|
||||
|
||||
@@ -282,11 +282,31 @@
|
||||
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | null |
|
||||
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | normal |
|
||||
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | normal |
|
||||
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | normal |
|
||||
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:70:24:78 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:70:24:83 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:75:24:78 | ", " | normal |
|
||||
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | normal |
|
||||
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | normal |
|
||||
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j | normal |
|
||||
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | normal |
|
||||
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | (...) ... | null |
|
||||
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null | normal |
|
||||
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:18:23:29 | (...) ... | null |
|
||||
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:32:23:38 | access to property Length | normal |
|
||||
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal |
|
||||
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:13 | access to local variable s | normal |
|
||||
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal |
|
||||
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | non-null |
|
||||
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i | normal |
|
||||
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:27:24:37 | call to method ToString | normal |
|
||||
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:9 | access to local variable s | normal |
|
||||
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
|
||||
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" | non-null |
|
||||
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | normal |
|
||||
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | normal |
|
||||
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | normal |
|
||||
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:70:31:78 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:70:31:83 | ... + ... | normal |
|
||||
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:75:31:78 | ", " | normal |
|
||||
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | normal |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:9:9:9:15 | return ...; | return |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
|
||||
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
|
||||
@@ -418,15 +438,27 @@
|
||||
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:33 | call to method ToBool | normal |
|
||||
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse | normal |
|
||||
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | normal |
|
||||
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg | normal |
|
||||
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:29:5:32 | access to parameter args | normal |
|
||||
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:6:13:6:13 | ; | normal |
|
||||
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:27:11:30 | access to parameter args | normal |
|
||||
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; | normal |
|
||||
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | normal |
|
||||
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args | normal |
|
||||
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; | normal |
|
||||
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args | normal |
|
||||
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | normal |
|
||||
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty |
|
||||
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | normal |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | non-null |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | null |
|
||||
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:29:20:38 | call to method ToArray | non-null |
|
||||
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:43:20:68 | call to method Empty | normal |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | null |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | non-null |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | null |
|
||||
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | normal |
|
||||
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; | normal |
|
||||
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:28:6:30 | {...} | normal |
|
||||
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:11:13:11:63 | Initializers[] iz = ... | normal |
|
||||
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:13:10:53 | Initializers i = ... | normal |
|
||||
@@ -491,7 +523,6 @@
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | non-null |
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | null |
|
||||
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | non-null |
|
||||
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | null |
|
||||
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | non-null |
|
||||
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:57:9:58 | "" | normal |
|
||||
| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" | normal |
|
||||
@@ -514,6 +545,29 @@
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true/true |
|
||||
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | normal |
|
||||
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | normal |
|
||||
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
|
||||
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal |
|
||||
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j | normal |
|
||||
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal |
|
||||
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | (...) ... | null |
|
||||
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | normal |
|
||||
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null | normal |
|
||||
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | normal |
|
||||
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:25 | String s = ... | normal |
|
||||
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:13 | access to local variable s | normal |
|
||||
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... | normal |
|
||||
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" | non-null |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | non-null |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:23:16:25 | "a" | normal |
|
||||
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" | normal |
|
||||
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:9 | access to local variable j | normal |
|
||||
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
|
||||
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
|
||||
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | (...) ... | non-null |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | non-null |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:24:17:24 | 1 | normal |
|
||||
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | normal |
|
||||
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | normal |
|
||||
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:40:17:40:17 | access to local variable o | normal |
|
||||
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Object o = ... | normal |
|
||||
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:16 | access to local variable o | normal |
|
||||
@@ -784,8 +838,104 @@
|
||||
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | ... != ... | true/true |
|
||||
| Switch.cs:50:35:50:38 | null | Switch.cs:50:35:50:38 | null | normal |
|
||||
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | break |
|
||||
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:28:55:48 | throw ... | throw(Exception) |
|
||||
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:34:55:48 | object creation of type Exception | normal |
|
||||
| Switch.cs:56:5:64:5 | {...} | Switch.cs:60:15:60:20 | break; | normal (break) |
|
||||
| Switch.cs:56:5:64:5 | {...} | Switch.cs:62:15:62:20 | break; | normal (break) |
|
||||
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:60:15:60:20 | break; | normal (break) |
|
||||
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:62:15:62:20 | break; | normal (break) |
|
||||
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:17 | 1 | normal |
|
||||
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:21 | ... + ... | normal |
|
||||
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:21:57:21 | 2 | normal |
|
||||
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | no-match |
|
||||
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:60:15:60:20 | break; | break |
|
||||
| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 | no-match |
|
||||
| Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; | break |
|
||||
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:62:15:62:20 | break; | break |
|
||||
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 | match |
|
||||
| Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; | break |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:71:15:71:20 | break; | normal (break) |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:72:18:72:19 | "" | no-match |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:73:15:73:20 | break; | normal (break) |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:71:15:71:20 | break; | normal (break) |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:72:18:72:19 | "" | no-match |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:73:15:73:20 | break; | normal (break) |
|
||||
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:17:68:25 | (...) ... | normal |
|
||||
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:25:68:25 | access to parameter s | normal |
|
||||
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | no-match |
|
||||
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:71:15:71:20 | break; | break |
|
||||
| Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; | break |
|
||||
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | no-match |
|
||||
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:73:15:73:20 | break; | break |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | match |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | no-match |
|
||||
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; | break |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:82:15:82:26 | return ...; | return |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:86:15:86:26 | return ...; | return |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:88:9:88:21 | return ...; | return |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:82:15:82:26 | return ...; | return |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:83:18:83:18 | 2 | no-match |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:85:17:85:22 | break; | normal (break) |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:86:15:86:26 | return ...; | return |
|
||||
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i | normal |
|
||||
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | no-match |
|
||||
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:82:15:82:26 | return ...; | return |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | match |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | no-match |
|
||||
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:15:82:26 | return ...; | return |
|
||||
| Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true | normal |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | no-match |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:84:19:84:23 | ... > ... | false/false |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:85:17:85:22 | break; | break |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | match |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | no-match |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:23 | ... > ... | false/false |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:85:17:85:22 | break; | break |
|
||||
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:19:84:19 | access to parameter j | normal |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:23 | ... > ... | false/false |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:23 | ... > ... | true/true |
|
||||
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:23:84:23 | 2 | normal |
|
||||
| Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; | break |
|
||||
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:15:86:26 | return ...; | return |
|
||||
| Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true | normal |
|
||||
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:9:88:21 | return ...; | return |
|
||||
| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | normal |
|
||||
| Switch.cs:92:5:99:5 | {...} | Switch.cs:96:15:96:26 | return ...; | return |
|
||||
| Switch.cs:92:5:99:5 | {...} | Switch.cs:98:9:98:21 | return ...; | return |
|
||||
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:95:18:95:20 | access to type Int32 | no-match |
|
||||
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:96:15:96:26 | return ...; | return |
|
||||
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o | normal |
|
||||
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | no-match |
|
||||
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:96:15:96:26 | return ...; | return |
|
||||
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:15:96:26 | return ...; | return |
|
||||
| Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true | normal |
|
||||
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:9:98:21 | return ...; | return |
|
||||
| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | normal |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:105:22:105:30 | return ...; | return |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:106:22:106:30 | return ...; | return |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:108:9:108:18 | return ...; | return |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:105:22:105:30 | return ...; | return |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:18:106:18 | 1 | no-match |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:22:106:30 | return ...; | return |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | non-null |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | null |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s | null |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:19:103:25 | access to property Length | normal |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | no-match |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:22:105:30 | return ...; | return |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | match |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | no-match |
|
||||
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:22:105:30 | return ...; | return |
|
||||
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 | normal |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | no-match |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:22:106:30 | return ...; | return |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | match |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | no-match |
|
||||
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:22:106:30 | return ...; | return |
|
||||
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 | normal |
|
||||
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:9:108:18 | return ...; | return |
|
||||
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:16:108:17 | -... | normal |
|
||||
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | normal |
|
||||
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:28:111:48 | throw ... | throw(Exception) |
|
||||
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | normal |
|
||||
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal |
|
||||
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | String s = ... | normal |
|
||||
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s | normal |
|
||||
@@ -963,6 +1113,7 @@
|
||||
| cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:35:33:35 | access to local variable i | normal |
|
||||
| cflow.cs:38:5:68:5 | {...} | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) |
|
||||
| cflow.cs:38:5:68:5 | {...} | cflow.cs:67:9:67:17 | return ...; | return |
|
||||
| cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:47:18:47:18 | 3 | no-match |
|
||||
| cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:49:17:49:22 | break; | normal (break) |
|
||||
| cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:39:17:39:17 | access to parameter a | normal |
|
||||
| cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:18:41:18 | 1 | no-match |
|
||||
@@ -1007,6 +1158,7 @@
|
||||
| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:17:57:51 | call to method WriteLine | normal |
|
||||
| cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:35:57:50 | "Not the answer" | normal |
|
||||
| cflow.cs:58:17:58:22 | break; | cflow.cs:58:17:58:22 | break; | break |
|
||||
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:62:18:62:18 | 0 | no-match |
|
||||
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) |
|
||||
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; | normal (break) |
|
||||
| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:17:60:32 | call to method Parse | normal |
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
class Foreach
|
||||
{
|
||||
void M1(string[] args)
|
||||
@@ -11,4 +14,10 @@ class Foreach
|
||||
foreach (var _ in args)
|
||||
;
|
||||
}
|
||||
|
||||
void M3(IEnumerable<string> e)
|
||||
{
|
||||
foreach (var x in e?.ToArray() ?? Enumerable.Empty<string>())
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,12 +256,31 @@
|
||||
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | exit M6 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} | semmle.label | successor |
|
||||
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | null |
|
||||
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | semmle.label | non-null |
|
||||
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... | semmle.label | successor |
|
||||
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... | semmle.label | successor |
|
||||
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
|
||||
@@ -391,19 +410,31 @@
|
||||
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | semmle.label | successor |
|
||||
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | semmle.label | successor |
|
||||
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool | semmle.label | successor |
|
||||
| Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:4:5:7:5 | {...} | semmle.label | successor |
|
||||
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 | semmle.label | empty |
|
||||
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg | semmle.label | non-empty |
|
||||
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | semmle.label | successor |
|
||||
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:10:5:13:5 | {...} | semmle.label | successor |
|
||||
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 | semmle.label | empty |
|
||||
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; | semmle.label | non-empty |
|
||||
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | semmle.label | successor |
|
||||
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 | semmle.label | empty |
|
||||
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | semmle.label | non-empty |
|
||||
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | semmle.label | successor |
|
||||
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} | semmle.label | successor |
|
||||
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | semmle.label | successor |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 | semmle.label | empty |
|
||||
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | semmle.label | non-empty |
|
||||
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} | semmle.label | successor |
|
||||
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... | semmle.label | successor |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 | semmle.label | empty |
|
||||
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | semmle.label | non-empty |
|
||||
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | semmle.label | successor |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray | semmle.label | non-null |
|
||||
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
|
||||
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e | semmle.label | successor |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | non-null |
|
||||
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
|
||||
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
|
||||
| Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:28:6:30 | {...} | semmle.label | successor |
|
||||
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | exit Initializers | semmle.label | successor |
|
||||
| Initializers.cs:8:10:8:10 | enter M | Initializers.cs:9:5:12:5 | {...} | semmle.label | successor |
|
||||
@@ -460,9 +491,7 @@
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:12:9:13 | exit M4 | semmle.label | non-null |
|
||||
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:51:9:58 | ... ?? ... | semmle.label | null |
|
||||
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:12:9:13 | exit M4 | semmle.label | non-null |
|
||||
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:57:9:58 | "" | semmle.label | null |
|
||||
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | semmle.label | successor |
|
||||
| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:12:9:13 | exit M4 | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:51:11:58 | ... && ... | semmle.label | null |
|
||||
@@ -476,6 +505,26 @@
|
||||
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:68:11:68 | 1 | semmle.label | false |
|
||||
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | exit M5 | semmle.label | successor |
|
||||
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | exit M5 | semmle.label | successor |
|
||||
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} | semmle.label | successor |
|
||||
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | semmle.label | null |
|
||||
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | semmle.label | successor |
|
||||
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | non-null |
|
||||
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | non-null |
|
||||
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | semmle.label | successor |
|
||||
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | semmle.label | successor |
|
||||
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:6:5:43:5 | {...} | semmle.label | successor |
|
||||
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | semmle.label | successor |
|
||||
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o | semmle.label | successor |
|
||||
@@ -717,9 +766,83 @@
|
||||
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | semmle.label | true |
|
||||
| Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | semmle.label | successor |
|
||||
| Switch.cs:51:17:51:22 | break; | Switch.cs:44:10:44:11 | exit M4 | semmle.label | break |
|
||||
| Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:34:55:48 | object creation of type Exception | semmle.label | successor |
|
||||
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:17:55:21 | exit Throw | semmle.label | exception(Exception) |
|
||||
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... | semmle.label | successor |
|
||||
| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} | semmle.label | successor |
|
||||
| Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | semmle.label | successor |
|
||||
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | semmle.label | successor |
|
||||
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | semmle.label | successor |
|
||||
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | semmle.label | successor |
|
||||
| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | semmle.label | successor |
|
||||
| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; | semmle.label | match |
|
||||
| Switch.cs:62:15:62:20 | break; | Switch.cs:55:10:55:11 | exit M5 | semmle.label | break |
|
||||
| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} | semmle.label | successor |
|
||||
| Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | semmle.label | successor |
|
||||
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: | semmle.label | successor |
|
||||
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | semmle.label | successor |
|
||||
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | semmle.label | successor |
|
||||
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | semmle.label | successor |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | exit M6 | semmle.label | no-match |
|
||||
| Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; | semmle.label | match |
|
||||
| Switch.cs:73:15:73:20 | break; | Switch.cs:66:10:66:11 | exit M6 | semmle.label | break |
|
||||
| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} | semmle.label | successor |
|
||||
| Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | semmle.label | successor |
|
||||
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | semmle.label | successor |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true | semmle.label | match |
|
||||
| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
|
||||
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | semmle.label | successor |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... | semmle.label | match |
|
||||
| Switch.cs:83:18:83:18 | 2 | Switch.cs:88:16:88:20 | false | semmle.label | no-match |
|
||||
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j | semmle.label | successor |
|
||||
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 | semmle.label | successor |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | semmle.label | true |
|
||||
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | semmle.label | false |
|
||||
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... | semmle.label | successor |
|
||||
| Switch.cs:85:17:85:22 | break; | Switch.cs:88:16:88:20 | false | semmle.label | break |
|
||||
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
|
||||
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
|
||||
| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} | semmle.label | successor |
|
||||
| Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | semmle.label | successor |
|
||||
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: | semmle.label | successor |
|
||||
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | semmle.label | successor |
|
||||
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true | semmle.label | match |
|
||||
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | semmle.label | no-match |
|
||||
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:91:10:91:11 | exit M8 | semmle.label | return |
|
||||
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:91:10:91:11 | exit M8 | semmle.label | return |
|
||||
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} | semmle.label | successor |
|
||||
| Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | semmle.label | successor |
|
||||
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | semmle.label | successor |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length | semmle.label | non-null |
|
||||
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:105:13:105:20 | case ...: | semmle.label | null |
|
||||
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:105:13:105:20 | case ...: | semmle.label | successor |
|
||||
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | semmle.label | successor |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 | semmle.label | match |
|
||||
| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: | semmle.label | no-match |
|
||||
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
|
||||
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | semmle.label | successor |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 | semmle.label | match |
|
||||
| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | semmle.label | no-match |
|
||||
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
|
||||
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
|
||||
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | semmle.label | successor |
|
||||
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | semmle.label | successor |
|
||||
| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception | semmle.label | successor |
|
||||
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw | semmle.label | exception(Exception) |
|
||||
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | semmle.label | successor |
|
||||
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | semmle.label | successor |
|
||||
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | semmle.label | successor |
|
||||
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s | semmle.label | successor |
|
||||
@@ -909,6 +1032,7 @@
|
||||
| cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | goto case ...; | semmle.label | successor |
|
||||
| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | semmle.label | successor |
|
||||
| cflow.cs:47:18:47:18 | 3 | cflow.cs:48:17:48:39 | ...; | semmle.label | match |
|
||||
| cflow.cs:47:18:47:18 | 3 | cflow.cs:51:9:59:9 | switch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:49:17:49:22 | break; | semmle.label | successor |
|
||||
| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:35:48:37 | "3" | semmle.label | successor |
|
||||
| cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | call to method WriteLine | semmle.label | successor |
|
||||
@@ -933,6 +1057,7 @@
|
||||
| cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | access to field Field | semmle.label | successor |
|
||||
| cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 | semmle.label | successor |
|
||||
| cflow.cs:62:18:62:18 | 0 | cflow.cs:63:17:64:55 | if (...) ... | semmle.label | match |
|
||||
| cflow.cs:62:18:62:18 | 0 | cflow.cs:67:16:67:16 | access to parameter a | semmle.label | no-match |
|
||||
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... | semmle.label | successor |
|
||||
| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:27 | this access | semmle.label | successor |
|
||||
| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:32:63:33 | "" | semmle.label | successor |
|
||||
|
||||
@@ -9,4 +9,11 @@ class NullCoalescing
|
||||
string M4(bool b, string s) => (b ? s : s) ?? "" ?? "";
|
||||
|
||||
int M5(bool? b1, bool b2, bool b3) => (b1 ?? (b2 && b3)) ? 0 : 1;
|
||||
|
||||
void M6(int i)
|
||||
{
|
||||
var j = (int?)null ?? 0;
|
||||
var s = "" ?? "a";
|
||||
j = (int?)i ?? 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,5 +52,61 @@ class Switch
|
||||
}
|
||||
}
|
||||
|
||||
void M5()
|
||||
{
|
||||
switch (1 + 2)
|
||||
{
|
||||
case 2 :
|
||||
break;
|
||||
case 3 :
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void M6(string s)
|
||||
{
|
||||
switch ((object)s)
|
||||
{
|
||||
case int _ :
|
||||
break;
|
||||
case "" :
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool M7(int i, int j)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1 :
|
||||
return true;
|
||||
case 2 :
|
||||
if (j > 2)
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool M8(object o)
|
||||
{
|
||||
switch (o)
|
||||
{
|
||||
case int _ :
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int M9(string s)
|
||||
{
|
||||
switch (s?.Length)
|
||||
{
|
||||
case 0 : return 0;
|
||||
case 1 : return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static bool Throw() => throw new Exception();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// semmle-extractor-options: /r:System.Threading.Thread.dll /r:System.Diagnostics.Debug.dll
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
|
||||
class ConstantCondition
|
||||
@@ -32,6 +33,62 @@ class ConstantCondition
|
||||
bool M3(double d) => d == d; // BAD: but flagged by cs/constant-comparison
|
||||
}
|
||||
|
||||
class ConstantNullness
|
||||
{
|
||||
void M1(int i)
|
||||
{
|
||||
var j = ((string)null)?.Length; // BAD
|
||||
var s = ((int?)i)?.ToString(); // BAD
|
||||
var k = s?.Length; // GOOD
|
||||
k = s?.ToLower()?.Length; // GOOD
|
||||
}
|
||||
|
||||
void M2(int i)
|
||||
{
|
||||
var j = (int?)null ?? 0; // BAD
|
||||
var s = "" ?? "a"; // BAD
|
||||
j = (int?)i ?? 1; // BAD
|
||||
s = ""?.CommaJoinWith(s); // BAD
|
||||
s = s ?? ""; // GOOD
|
||||
}
|
||||
}
|
||||
|
||||
class ConstantMatching
|
||||
{
|
||||
void M1()
|
||||
{
|
||||
switch (1 + 2)
|
||||
{
|
||||
case 2 : // BAD
|
||||
break;
|
||||
case 3 : // BAD
|
||||
break;
|
||||
case int _ : // GOOD
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void M2(string s)
|
||||
{
|
||||
switch ((object)s)
|
||||
{
|
||||
case int _ : // BAD
|
||||
break;
|
||||
case "" : // GOOD
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void M3(object o)
|
||||
{
|
||||
switch (o)
|
||||
{
|
||||
case IList _ : // GOOD
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Assertions
|
||||
{
|
||||
void F()
|
||||
@@ -39,3 +96,8 @@ class Assertions
|
||||
Debug.Assert(false ? false : true); // GOOD
|
||||
}
|
||||
}
|
||||
|
||||
static class Ext
|
||||
{
|
||||
public static string CommaJoinWith(this string s1, string s2) => s1 + ", " + s2;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
| ConstantCondition.cs:40:18:40:29 | (...) ... | Expression is always 'null'. |
|
||||
| ConstantCondition.cs:41:18:41:24 | (...) ... | Expression is never 'null'. |
|
||||
| ConstantCondition.cs:48:17:48:26 | (...) ... | Expression is always 'null'. |
|
||||
| ConstantCondition.cs:49:17:49:18 | "" | Expression is never 'null'. |
|
||||
| ConstantCondition.cs:50:13:50:19 | (...) ... | Expression is never 'null'. |
|
||||
| ConstantCondition.cs:51:13:51:14 | "" | Expression is never 'null'. |
|
||||
| ConstantCondition.cs:62:18:62:18 | 2 | Pattern never matches. |
|
||||
| ConstantCondition.cs:64:18:64:18 | 3 | Pattern always matches. |
|
||||
| ConstantCondition.cs:75:18:75:20 | access to type Int32 | Pattern never matches. |
|
||||
| ConstantConditionBad.cs:5:16:5:20 | ... > ... | Condition always evaluates to 'false'. |
|
||||
| ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | Condition always evaluates to 'true'. |
|
||||
| ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | Condition always evaluates to 'false'. |
|
||||
@@ -7,6 +16,8 @@
|
||||
| ConstantIfCondition.cs:11:17:11:29 | ... == ... | Condition always evaluates to 'true'. |
|
||||
| ConstantIfCondition.cs:14:17:14:21 | false | Condition always evaluates to 'false'. |
|
||||
| ConstantIfCondition.cs:17:17:17:26 | ... == ... | Condition always evaluates to 'true'. |
|
||||
| ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | Expression is never 'null'. |
|
||||
| ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | Expression is always 'null'. |
|
||||
| ConstantWhileCondition.cs:12:20:12:32 | ... == ... | Condition always evaluates to 'true'. |
|
||||
| ConstantWhileCondition.cs:16:20:16:24 | false | Condition always evaluates to 'false'. |
|
||||
| ConstantWhileCondition.cs:24:20:24:29 | ... == ... | Condition always evaluates to 'true'. |
|
||||
|
||||
Reference in New Issue
Block a user